<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>libcoap: net.c Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr id="projectrow">
  <td id="projectalign">
   <div id="projectname">libcoap<span id="projectnumber">&#160;4.2.0</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.8 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function() { init_codefold(0); });
/* @license-end */
</script>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('net_8c_source.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>

<div class="header">
  <div class="headertitle"><div class="title">net.c</div></div>
</div><!--header-->
<div class="contents">
<a href="net_8c.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">/* net.c -- CoAP network interface</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment"> *</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment"> * Copyright (C) 2010--2016 Olaf Bergmann &lt;bergmann@tzi.org&gt;</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span><span class="comment"> *</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="comment"> * This file is part of the CoAP library libcoap. Please see</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span><span class="comment"> * README for terms of use.</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="comment"> */</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span> </div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><span class="preprocessor">#include &quot;coap_config.h&quot;</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span> </div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span><span class="preprocessor">#include &lt;ctype.h&gt;</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span><span class="preprocessor">#include &lt;stdio.h&gt;</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span><span class="preprocessor">#include &lt;errno.h&gt;</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span><span class="preprocessor">#ifdef HAVE_LIMITS_H</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno">   15</span><span class="preprocessor">#include &lt;limits.h&gt;</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno">   16</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno">   17</span><span class="preprocessor">#ifdef HAVE_UNISTD_H</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno">   18</span><span class="preprocessor">#include &lt;unistd.h&gt;</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno">   19</span><span class="preprocessor">#elif HAVE_SYS_UNISTD_H</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno">   20</span><span class="preprocessor">#include &lt;sys/unistd.h&gt;</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno">   21</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno">   22</span><span class="preprocessor">#ifdef HAVE_SYS_TYPES_H</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno">   23</span><span class="preprocessor">#include &lt;sys/types.h&gt;</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno">   24</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno">   25</span><span class="preprocessor">#ifdef HAVE_SYS_SOCKET_H</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno">   26</span><span class="preprocessor">#include &lt;sys/socket.h&gt;</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno">   27</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno">   28</span><span class="preprocessor">#ifdef HAVE_NETINET_IN_H</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno">   29</span><span class="preprocessor">#include &lt;netinet/in.h&gt;</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno">   30</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno">   31</span><span class="preprocessor">#ifdef HAVE_ARPA_INET_H</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno">   32</span><span class="preprocessor">#include &lt;arpa/inet.h&gt;</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno">   33</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno">   34</span><span class="preprocessor">#ifdef HAVE_WS2TCPIP_H</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno">   35</span><span class="preprocessor">#include &lt;ws2tcpip.h&gt;</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno">   36</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno">   37</span> </div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno">   38</span><span class="preprocessor">#ifdef WITH_LWIP</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno">   39</span><span class="preprocessor">#include &lt;lwip/pbuf.h&gt;</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno">   40</span><span class="preprocessor">#include &lt;lwip/udp.h&gt;</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno">   41</span><span class="preprocessor">#include &lt;lwip/timeouts.h&gt;</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno">   42</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno">   43</span> </div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno">   44</span><span class="preprocessor">#include &quot;<a class="code" href="libcoap_8h.html">libcoap.h</a>&quot;</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno">   45</span><span class="preprocessor">#include &quot;<a class="code" href="utlist_8h.html">utlist.h</a>&quot;</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno">   46</span><span class="preprocessor">#include &quot;<a class="code" href="coap__debug_8h.html">coap_debug.h</a>&quot;</span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno">   47</span><span class="preprocessor">#include &quot;<a class="code" href="mem_8h.html">mem.h</a>&quot;</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno">   48</span><span class="preprocessor">#include &quot;<a class="code" href="str_8h.html">str.h</a>&quot;</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno">   49</span><span class="preprocessor">#include &quot;<a class="code" href="async_8h.html">async.h</a>&quot;</span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno">   50</span><span class="preprocessor">#include &quot;<a class="code" href="resource_8h.html">resource.h</a>&quot;</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno">   51</span><span class="preprocessor">#include &quot;<a class="code" href="option_8h.html">option.h</a>&quot;</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno">   52</span><span class="preprocessor">#include &quot;<a class="code" href="encode_8h.html">encode.h</a>&quot;</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno">   53</span><span class="preprocessor">#include &quot;<a class="code" href="block_8h.html">block.h</a>&quot;</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno">   54</span><span class="preprocessor">#include &quot;<a class="code" href="net_8h.html">net.h</a>&quot;</span></div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno">   55</span><span class="preprocessor">#include &quot;<a class="code" href="utlist_8h.html">utlist.h</a>&quot;</span></div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno">   56</span> </div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno">   57</span><span class="preprocessor">#ifndef min</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"><a class="line" href="net_8c.html#ac6afabdc09a49a433ee19d8a9486056d">   58</a></span><span class="preprocessor">#define min(a,b) ((a) &lt; (b) ? (a) : (b))</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno">   59</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno">   60</span> </div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"><a class="line" href="net_8c.html#a0ac65b37442b7b10d74dedeb7d25e737">   65</a></span><span class="preprocessor">#define FRAC_BITS 6</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno">   66</span> </div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"><a class="line" href="net_8c.html#a51c241e7ad52441b8d4c1fd5f498b3b9">   71</a></span><span class="preprocessor">#define MAX_BITS 8</span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno">   72</span> </div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno">   73</span><span class="preprocessor">#if FRAC_BITS &gt; 8</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno">   74</span><span class="preprocessor">#error FRAC_BITS must be less or equal 8</span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno">   75</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno">   76</span> </div>
<div class="foldopen" id="foldopen00078" data-start="" data-end="">
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"><a class="line" href="net_8c.html#aedd6a61216a54973fc7db5272affee75">   78</a></span><span class="preprocessor">#define Q(frac,fval) ((uint16_t)(((1 &lt;&lt; (frac)) * fval.integer_part) + \</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno">   79</span><span class="preprocessor">                      ((1 &lt;&lt; (frac)) * fval.fractional_part + 500)/1000))</span></div>
</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno">   80</span> </div>
<div class="foldopen" id="foldopen00082" data-start="" data-end="">
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"><a class="line" href="net_8c.html#aef339b3c4338bdb86736d679dc944b9e">   82</a></span><span class="preprocessor">#define ACK_RANDOM_FACTOR                                        \</span></div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno">   83</span><span class="preprocessor">  Q(FRAC_BITS, session-&gt;ack_random_factor)</span></div>
</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno">   84</span> </div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"><a class="line" href="net_8c.html#a5e53751a27267574b92f23d01951a259">   86</a></span><span class="preprocessor">#define ACK_TIMEOUT Q(FRAC_BITS, session-&gt;ack_timeout)</span></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno">   87</span> </div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno">   88</span><span class="preprocessor">#if !defined(WITH_LWIP) &amp;&amp; !defined(WITH_CONTIKI)</span></div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno">   89</span> </div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno">   90</span><a class="code hl_define" href="libcoap_8h.html#a58b4446dccd0b8c21b3532ef6b77a57d">COAP_STATIC_INLINE</a> <a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> *</div>
<div class="foldopen" id="foldopen00091" data-start="{" data-end="}">
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"><a class="line" href="net_8c.html#ad76ef4794cfee9fd5d3cd65e30f77b5d">   91</a></span><a class="code hl_function" href="net_8c.html#ad76ef4794cfee9fd5d3cd65e30f77b5d">coap_malloc_node</a>(<span class="keywordtype">void</span>) {</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno">   92</span>  <span class="keywordflow">return</span> (<a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> *)<a class="code hl_function" href="mem_8h.html#a9f9fd8d6cf24f9c45a5501aeba5acaf9">coap_malloc_type</a>(<a class="code hl_enumvalue" href="mem_8h.html#a703fa791ab7a14ff983df73b15e9c620a239e408c064f87c6e7cfa8b2d6442f9d">COAP_NODE</a>, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a>));</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno">   93</span>}</div>
</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno">   94</span> </div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno">   95</span><a class="code hl_define" href="libcoap_8h.html#a58b4446dccd0b8c21b3532ef6b77a57d">COAP_STATIC_INLINE</a> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen00096" data-start="{" data-end="}">
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"><a class="line" href="net_8c.html#aa2f296838e4a779197c43b254e385ddc">   96</a></span><a class="code hl_function" href="net_8c.html#aa2f296838e4a779197c43b254e385ddc">coap_free_node</a>(<a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> *node) {</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno">   97</span>  <a class="code hl_function" href="mem_8h.html#ae7214e0c73a4d4290525873e739ed422">coap_free_type</a>(<a class="code hl_enumvalue" href="mem_8h.html#a703fa791ab7a14ff983df73b15e9c620a239e408c064f87c6e7cfa8b2d6442f9d">COAP_NODE</a>, node);</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno">   98</span>}</div>
</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno">   99</span><span class="preprocessor">#endif </span><span class="comment">/* !defined(WITH_LWIP) &amp;&amp; !defined(WITH_CONTIKI) */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno">  100</span> </div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno">  101</span><span class="keywordtype">void</span> <a class="code hl_function" href="net_8c.html#a157d58fe7840d7d7e36c40fff0825674">coap_free_endpoint</a>(<a class="code hl_struct" href="structcoap__endpoint__t.html">coap_endpoint_t</a> *ep);</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno">  102</span> </div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno">  103</span><span class="preprocessor">#ifdef WITH_LWIP</span></div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno">  104</span> </div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno">  105</span><span class="preprocessor">#include &lt;lwip/memp.h&gt;</span></div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno">  106</span> </div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno">  107</span><span class="keyword">static</span> <span class="keywordtype">void</span> coap_retransmittimer_execute(<span class="keywordtype">void</span> *arg);</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno">  108</span><span class="keyword">static</span> <span class="keywordtype">void</span> coap_retransmittimer_restart(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *ctx);</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno">  109</span> </div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno">  110</span><a class="code hl_define" href="libcoap_8h.html#a58b4446dccd0b8c21b3532ef6b77a57d">COAP_STATIC_INLINE</a> <a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> *</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno">  111</span><a class="code hl_function" href="net_8c.html#ad76ef4794cfee9fd5d3cd65e30f77b5d">coap_malloc_node</a>() {</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno">  112</span>  <span class="keywordflow">return</span> (<a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> *)memp_malloc(MEMP_COAP_NODE);</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno">  113</span>}</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno">  114</span> </div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno">  115</span><a class="code hl_define" href="libcoap_8h.html#a58b4446dccd0b8c21b3532ef6b77a57d">COAP_STATIC_INLINE</a> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno">  116</span><a class="code hl_function" href="net_8c.html#aa2f296838e4a779197c43b254e385ddc">coap_free_node</a>(<a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> *node) {</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno">  117</span>  memp_free(MEMP_COAP_NODE, node);</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno">  118</span>}</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno">  119</span> </div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno">  120</span><span class="preprocessor">#endif </span><span class="comment">/* WITH_LWIP */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno">  121</span><span class="preprocessor">#ifdef WITH_CONTIKI</span></div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno">  122</span><span class="preprocessor"># ifndef DEBUG</span></div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno">  123</span><span class="preprocessor">#  define DEBUG DEBUG_PRINT</span></div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno">  124</span><span class="preprocessor"># endif </span><span class="comment">/* DEBUG */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno">  125</span> </div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno">  126</span><span class="preprocessor">#include &quot;<a class="code" href="mem_8h.html">mem.h</a>&quot;</span></div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno">  127</span><span class="preprocessor">#include &quot;net/ip/uip-debug.h&quot;</span></div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno">  128</span> </div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno">  129</span><span class="preprocessor">#define UIP_IP_BUF   ((struct uip_ip_hdr *)&amp;uip_buf[UIP_LLH_LEN])</span></div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno">  130</span><span class="preprocessor">#define UIP_UDP_BUF  ((struct uip_udp_hdr *)&amp;uip_buf[UIP_LLIPH_LEN])</span></div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno">  131</span> </div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno">  132</span><span class="keywordtype">void</span> coap_resources_init();</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno">  133</span> </div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno">  134</span><span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> initialized = 0;</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno">  135</span><a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> the_coap_context;</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno">  136</span> </div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno">  137</span>PROCESS(coap_retransmit_process, <span class="stringliteral">&quot;message retransmit process&quot;</span>);</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno">  138</span> </div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno">  139</span><a class="code hl_define" href="libcoap_8h.html#a58b4446dccd0b8c21b3532ef6b77a57d">COAP_STATIC_INLINE</a> <a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> *</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno">  140</span><a class="code hl_function" href="net_8c.html#ad76ef4794cfee9fd5d3cd65e30f77b5d">coap_malloc_node</a>() {</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno">  141</span>  <span class="keywordflow">return</span> (<a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> *)<a class="code hl_function" href="mem_8h.html#a9f9fd8d6cf24f9c45a5501aeba5acaf9">coap_malloc_type</a>(<a class="code hl_enumvalue" href="mem_8h.html#a703fa791ab7a14ff983df73b15e9c620a239e408c064f87c6e7cfa8b2d6442f9d">COAP_NODE</a>, 0);</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno">  142</span>}</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno">  143</span> </div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno">  144</span><a class="code hl_define" href="libcoap_8h.html#a58b4446dccd0b8c21b3532ef6b77a57d">COAP_STATIC_INLINE</a> <span class="keywordtype">void</span></div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno">  145</span><a class="code hl_function" href="net_8c.html#aa2f296838e4a779197c43b254e385ddc">coap_free_node</a>(<a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> *node) {</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno">  146</span>  <a class="code hl_function" href="mem_8h.html#ae7214e0c73a4d4290525873e739ed422">coap_free_type</a>(<a class="code hl_enumvalue" href="mem_8h.html#a703fa791ab7a14ff983df73b15e9c620a239e408c064f87c6e7cfa8b2d6442f9d">COAP_NODE</a>, node);</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno">  147</span>}</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno">  148</span><span class="preprocessor">#endif </span><span class="comment">/* WITH_CONTIKI */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno">  149</span> </div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno">  150</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span></div>
<div class="foldopen" id="foldopen00151" data-start="{" data-end="}">
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"><a class="line" href="net_8c.html#a116b4fec1683a94831f02b3e1a54dcac">  151</a></span><a class="code hl_function" href="net_8c.html#a116b4fec1683a94831f02b3e1a54dcac">coap_adjust_basetime</a>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *ctx, <a class="code hl_typedef" href="group__clock.html#ga97ff1502e211b4ee6c3f15a598833438">coap_tick_t</a> now) {</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno">  152</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> result = 0;</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno">  153</span>  <a class="code hl_typedef" href="group__clock.html#ga2dd35de82321ad2466dab00275914544">coap_tick_diff_t</a> delta = now - ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a080dc026c9eec48849d0140b433e04bb">sendqueue_basetime</a>;</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno">  154</span> </div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno">  155</span>  <span class="keywordflow">if</span> (ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a>) {</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno">  156</span>    <span class="comment">/* delta &lt; 0 means that the new time stamp is before the old. */</span></div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno">  157</span>    <span class="keywordflow">if</span> (delta &lt;= 0) {</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno">  158</span>      ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a>-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#ab5edd7b3b3ddd98d8356febbd4726e7c">t</a> -= delta;</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno">  159</span>    } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno">  160</span>      <span class="comment">/* This case is more complex: The time must be advanced forward,</span></div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno">  161</span><span class="comment">       * thus possibly leading to timed out elements at the queue&#39;s</span></div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno">  162</span><span class="comment">       * start. For every element that has timed out, its relative</span></div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno">  163</span><span class="comment">       * time is set to zero and the result counter is increased. */</span></div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno">  164</span> </div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno">  165</span>      <a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> *q = ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a>;</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno">  166</span>      <a class="code hl_typedef" href="group__clock.html#ga97ff1502e211b4ee6c3f15a598833438">coap_tick_t</a> t = 0;</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno">  167</span>      <span class="keywordflow">while</span> (q &amp;&amp; (t + q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#ab5edd7b3b3ddd98d8356febbd4726e7c">t</a> &lt; (<a class="code hl_typedef" href="group__clock.html#ga97ff1502e211b4ee6c3f15a598833438">coap_tick_t</a>)delta)) {</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno">  168</span>        t += q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#ab5edd7b3b3ddd98d8356febbd4726e7c">t</a>;</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno">  169</span>        q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#ab5edd7b3b3ddd98d8356febbd4726e7c">t</a> = 0;</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno">  170</span>        result++;</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno">  171</span>        q = q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a75428f649543d0779fce28c8538247d6">next</a>;</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno">  172</span>      }</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno">  173</span> </div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno">  174</span>      <span class="comment">/* finally adjust the first element that has not expired */</span></div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno">  175</span>      <span class="keywordflow">if</span> (q) {</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno">  176</span>        q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#ab5edd7b3b3ddd98d8356febbd4726e7c">t</a> = (<a class="code hl_typedef" href="group__clock.html#ga97ff1502e211b4ee6c3f15a598833438">coap_tick_t</a>)delta - t;</div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno">  177</span>      }</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno">  178</span>    }</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno">  179</span>  }</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno">  180</span> </div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno">  181</span>  <span class="comment">/* adjust basetime */</span></div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno">  182</span>  ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a080dc026c9eec48849d0140b433e04bb">sendqueue_basetime</a> += delta;</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno">  183</span> </div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno">  184</span>  <span class="keywordflow">return</span> result;</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno">  185</span>}</div>
</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno">  186</span> </div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno">  187</span><span class="keywordtype">int</span></div>
<div class="foldopen" id="foldopen00188" data-start="{" data-end="}">
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"><a class="line" href="net_8c.html#a80d2c3b0141e98bf3f7914e7e59b9530">  188</a></span><a class="code hl_function" href="net_8c.html#a80d2c3b0141e98bf3f7914e7e59b9530">coap_insert_node</a>(<a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> **queue, <a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> *node) {</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno">  189</span>  <a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> *p, *q;</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno">  190</span>  <span class="keywordflow">if</span> (!queue || !node)</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno">  191</span>    <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno">  192</span> </div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno">  193</span>  <span class="comment">/* set queue head if empty */</span></div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno">  194</span>  <span class="keywordflow">if</span> (!*queue) {</div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno">  195</span>    *queue = node;</div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno">  196</span>    <span class="keywordflow">return</span> 1;</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno">  197</span>  }</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno">  198</span> </div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno">  199</span>  <span class="comment">/* replace queue head if PDU&#39;s time is less than head&#39;s time */</span></div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno">  200</span>  q = *queue;</div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno">  201</span>  <span class="keywordflow">if</span> (node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#ab5edd7b3b3ddd98d8356febbd4726e7c">t</a> &lt; q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#ab5edd7b3b3ddd98d8356febbd4726e7c">t</a>) {</div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno">  202</span>    node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a75428f649543d0779fce28c8538247d6">next</a> = q;</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno">  203</span>    *queue = node;</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno">  204</span>    q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#ab5edd7b3b3ddd98d8356febbd4726e7c">t</a> -= node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#ab5edd7b3b3ddd98d8356febbd4726e7c">t</a>;                <span class="comment">/* make q-&gt;t relative to node-&gt;t */</span></div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno">  205</span>    <span class="keywordflow">return</span> 1;</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno">  206</span>  }</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno">  207</span> </div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno">  208</span>  <span class="comment">/* search for right place to insert */</span></div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno">  209</span>  <span class="keywordflow">do</span> {</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno">  210</span>    node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#ab5edd7b3b3ddd98d8356febbd4726e7c">t</a> -= q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#ab5edd7b3b3ddd98d8356febbd4726e7c">t</a>;                <span class="comment">/* make node-&gt; relative to q-&gt;t */</span></div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno">  211</span>    p = q;</div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno">  212</span>    q = q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a75428f649543d0779fce28c8538247d6">next</a>;</div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno">  213</span>  } <span class="keywordflow">while</span> (q &amp;&amp; q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#ab5edd7b3b3ddd98d8356febbd4726e7c">t</a> &lt;= node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#ab5edd7b3b3ddd98d8356febbd4726e7c">t</a>);</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno">  214</span> </div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno">  215</span>  <span class="comment">/* insert new item */</span></div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno">  216</span>  <span class="keywordflow">if</span> (q) {</div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno">  217</span>    q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#ab5edd7b3b3ddd98d8356febbd4726e7c">t</a> -= node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#ab5edd7b3b3ddd98d8356febbd4726e7c">t</a>;                <span class="comment">/* make q-&gt;t relative to node-&gt;t */</span></div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno">  218</span>  }</div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno">  219</span>  node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a75428f649543d0779fce28c8538247d6">next</a> = q;</div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno">  220</span>  p-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a75428f649543d0779fce28c8538247d6">next</a> = node;</div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno">  221</span>  <span class="keywordflow">return</span> 1;</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno">  222</span>}</div>
</div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno">  223</span> </div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno">  224</span><span class="keywordtype">int</span></div>
<div class="foldopen" id="foldopen00225" data-start="{" data-end="}">
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"><a class="line" href="net_8c.html#a44c39a2314035989d3e07b9d9328e08c">  225</a></span><a class="code hl_function" href="net_8c.html#a44c39a2314035989d3e07b9d9328e08c">coap_delete_node</a>(<a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> *node) {</div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno">  226</span>  <span class="keywordflow">if</span> (!node)</div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno">  227</span>    <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno">  228</span> </div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno">  229</span>  <a class="code hl_function" href="pdu_8c.html#a48581f968a30ef4278702eb1c16b7a90">coap_delete_pdu</a>(node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a>);</div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno">  230</span>  <span class="keywordflow">if</span> ( node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a20ff974763849b7aeaca2cbf6f4b8f70">session</a> ) {</div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno">  231</span>    <span class="comment">/*</span></div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno">  232</span><span class="comment">     * Need to remove out of context-&gt;sendqueue as added in by coap_wait_ack()</span></div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno">  233</span><span class="comment">     */</span></div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno">  234</span>    <span class="keywordflow">if</span> (node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a20ff974763849b7aeaca2cbf6f4b8f70">session</a>-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a8f8e37457b167cc8b95fadd7eeffd8d7">context</a>-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a>) {</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno">  235</span>      <a class="code hl_define" href="utlist_8h.html#a34a4e54d488753465f6e87bb63b93c0e">LL_DELETE</a>(node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a20ff974763849b7aeaca2cbf6f4b8f70">session</a>-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a8f8e37457b167cc8b95fadd7eeffd8d7">context</a>-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a>, node);</div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno">  236</span>    }</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno">  237</span>    <a class="code hl_function" href="coap__session_8c.html#a9aee135ba884d7c143b11bc42fd23e53">coap_session_release</a>(node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a20ff974763849b7aeaca2cbf6f4b8f70">session</a>);</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno">  238</span>  }</div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno">  239</span>  <a class="code hl_function" href="net_8c.html#aa2f296838e4a779197c43b254e385ddc">coap_free_node</a>(node);</div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno">  240</span> </div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno">  241</span>  <span class="keywordflow">return</span> 1;</div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno">  242</span>}</div>
</div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno">  243</span> </div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno">  244</span><span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen00245" data-start="{" data-end="}">
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"><a class="line" href="net_8c.html#a2c1e86998c712346baf2d116dbf1ac7f">  245</a></span><a class="code hl_function" href="net_8c.html#a2c1e86998c712346baf2d116dbf1ac7f">coap_delete_all</a>(<a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> *queue) {</div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno">  246</span>  <span class="keywordflow">if</span> (!queue)</div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno">  247</span>    <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno">  248</span> </div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno">  249</span>  <a class="code hl_function" href="net_8c.html#a2c1e86998c712346baf2d116dbf1ac7f">coap_delete_all</a>(queue-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a75428f649543d0779fce28c8538247d6">next</a>);</div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno">  250</span>  <a class="code hl_function" href="net_8c.html#a44c39a2314035989d3e07b9d9328e08c">coap_delete_node</a>(queue);</div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno">  251</span>}</div>
</div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno">  252</span> </div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno">  253</span><a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> *</div>
<div class="foldopen" id="foldopen00254" data-start="{" data-end="}">
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"><a class="line" href="net_8c.html#adbf4c617bdb13f0b61f83dca2ecdcc9e">  254</a></span><a class="code hl_function" href="net_8c.html#adbf4c617bdb13f0b61f83dca2ecdcc9e">coap_new_node</a>(<span class="keywordtype">void</span>) {</div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno">  255</span>  <a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> *node;</div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno">  256</span>  node = <a class="code hl_function" href="net_8c.html#ad76ef4794cfee9fd5d3cd65e30f77b5d">coap_malloc_node</a>();</div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno">  257</span> </div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno">  258</span>  <span class="keywordflow">if</span> (!node) {</div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno">  259</span><span class="preprocessor">#ifndef NDEBUG</span></div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno">  260</span>    <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446a8f6fe15bfe15104da6d1b360194a5400">LOG_WARNING</a>, <span class="stringliteral">&quot;coap_new_node: malloc\n&quot;</span>);</div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno">  261</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno">  262</span>    <span class="keywordflow">return</span> NULL;</div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno">  263</span>  }</div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno">  264</span> </div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno">  265</span>  memset(node, 0, <span class="keyword">sizeof</span>(*node));</div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno">  266</span>  <span class="keywordflow">return</span> node;</div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno">  267</span>}</div>
</div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno">  268</span> </div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno">  269</span><a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> *</div>
<div class="foldopen" id="foldopen00270" data-start="{" data-end="}">
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"><a class="line" href="net_8c.html#a4a9f7d31eafd7d82776f9b1a9291eea0">  270</a></span><a class="code hl_function" href="net_8c.html#a4a9f7d31eafd7d82776f9b1a9291eea0">coap_peek_next</a>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *context) {</div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno">  271</span>  <span class="keywordflow">if</span> (!context || !context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a>)</div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno">  272</span>    <span class="keywordflow">return</span> NULL;</div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno">  273</span> </div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno">  274</span>  <span class="keywordflow">return</span> context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a>;</div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno">  275</span>}</div>
</div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno">  276</span> </div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno">  277</span><a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> *</div>
<div class="foldopen" id="foldopen00278" data-start="{" data-end="}">
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"><a class="line" href="net_8c.html#a740acba1e579ecec3c67eca3b7522164">  278</a></span><a class="code hl_function" href="net_8c.html#a740acba1e579ecec3c67eca3b7522164">coap_pop_next</a>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *context) {</div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno">  279</span>  <a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> *next;</div>
<div class="line"><a id="l00280" name="l00280"></a><span class="lineno">  280</span> </div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno">  281</span>  <span class="keywordflow">if</span> (!context || !context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a>)</div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno">  282</span>    <span class="keywordflow">return</span> NULL;</div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno">  283</span> </div>
<div class="line"><a id="l00284" name="l00284"></a><span class="lineno">  284</span>  next = context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a>;</div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno">  285</span>  context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a> = context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a>-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a75428f649543d0779fce28c8538247d6">next</a>;</div>
<div class="line"><a id="l00286" name="l00286"></a><span class="lineno">  286</span>  <span class="keywordflow">if</span> (context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a>) {</div>
<div class="line"><a id="l00287" name="l00287"></a><span class="lineno">  287</span>    context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a>-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#ab5edd7b3b3ddd98d8356febbd4726e7c">t</a> += next-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#ab5edd7b3b3ddd98d8356febbd4726e7c">t</a>;</div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno">  288</span>  }</div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno">  289</span>  next-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a75428f649543d0779fce28c8538247d6">next</a> = NULL;</div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno">  290</span>  <span class="keywordflow">return</span> next;</div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno">  291</span>}</div>
</div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno">  292</span> </div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno">  293</span><span class="keyword">static</span> <span class="keywordtype">size_t</span></div>
<div class="foldopen" id="foldopen00294" data-start="{" data-end="}">
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"><a class="line" href="net_8c.html#a59140d9e3d88e6799879b6e4153b48a3">  294</a></span><a class="code hl_function" href="net_8c.html#a59140d9e3d88e6799879b6e4153b48a3">coap_get_session_client_psk</a>(</div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno">  295</span>  <span class="keyword">const</span> <a class="code hl_struct" href="structcoap__session__t.html">coap_session_t</a> *session,</div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno">  296</span>  <span class="keyword">const</span> <a class="code hl_typedef" href="uthash_8h.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a> *hint, <span class="keywordtype">size_t</span> hint_len,</div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno">  297</span>  <a class="code hl_typedef" href="uthash_8h.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a> *identity, <span class="keywordtype">size_t</span> *identity_len, <span class="keywordtype">size_t</span> max_identity_len,</div>
<div class="line"><a id="l00298" name="l00298"></a><span class="lineno">  298</span>  <a class="code hl_typedef" href="uthash_8h.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a> *psk, <span class="keywordtype">size_t</span> max_psk_len</div>
<div class="line"><a id="l00299" name="l00299"></a><span class="lineno">  299</span>) {</div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno">  300</span>  (void)hint;</div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno">  301</span>  (void)hint_len;</div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno">  302</span>  <span class="keywordflow">if</span> (session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a8a7bb416f1b131d5eeddd2c7915d4e3e">psk_identity</a> &amp;&amp; session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a3d42db7192f7dd9b4dbc580623ae80b2">psk_identity_len</a> &gt; 0 &amp;&amp; session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a68e9ded6d8b771bba584d50809cee98c">psk_key</a> &amp;&amp; session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#af95ccb69ae49c6d8a2a3ccbd8d967067">psk_key_len</a> &gt; 0) {</div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno">  303</span>    <span class="keywordflow">if</span> (session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a3d42db7192f7dd9b4dbc580623ae80b2">psk_identity_len</a> &lt;= max_identity_len &amp;&amp; session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#af95ccb69ae49c6d8a2a3ccbd8d967067">psk_key_len</a> &lt;= max_psk_len) {</div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno">  304</span>      memcpy(identity, session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a8a7bb416f1b131d5eeddd2c7915d4e3e">psk_identity</a>, session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a3d42db7192f7dd9b4dbc580623ae80b2">psk_identity_len</a>);</div>
<div class="line"><a id="l00305" name="l00305"></a><span class="lineno">  305</span>      memcpy(psk, session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a68e9ded6d8b771bba584d50809cee98c">psk_key</a>, session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#af95ccb69ae49c6d8a2a3ccbd8d967067">psk_key_len</a>);</div>
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno">  306</span>      *identity_len = session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a3d42db7192f7dd9b4dbc580623ae80b2">psk_identity_len</a>;</div>
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno">  307</span>      <span class="keywordflow">return</span> session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#af95ccb69ae49c6d8a2a3ccbd8d967067">psk_key_len</a>;</div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno">  308</span>    }</div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno">  309</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a8f8e37457b167cc8b95fadd7eeffd8d7">context</a> &amp;&amp; session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a8f8e37457b167cc8b95fadd7eeffd8d7">context</a>-&gt;<a class="code hl_variable" href="structcoap__context__t.html#ab12d8e6ea4ec3ec2f196bd088d280f81">psk_key</a> &amp;&amp; session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a8f8e37457b167cc8b95fadd7eeffd8d7">context</a>-&gt;<a class="code hl_variable" href="structcoap__context__t.html#af2e8cc51d43707399bf19226afca7cd4">psk_key_len</a> &gt; 0) {</div>
<div class="line"><a id="l00310" name="l00310"></a><span class="lineno">  310</span>    <span class="keywordflow">if</span> (session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a8f8e37457b167cc8b95fadd7eeffd8d7">context</a>-&gt;<a class="code hl_variable" href="structcoap__context__t.html#af2e8cc51d43707399bf19226afca7cd4">psk_key_len</a> &lt;= max_psk_len) {</div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno">  311</span>      *identity_len = 0;</div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno">  312</span>      memcpy(psk, session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a8f8e37457b167cc8b95fadd7eeffd8d7">context</a>-&gt;<a class="code hl_variable" href="structcoap__context__t.html#ab12d8e6ea4ec3ec2f196bd088d280f81">psk_key</a>, session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a8f8e37457b167cc8b95fadd7eeffd8d7">context</a>-&gt;<a class="code hl_variable" href="structcoap__context__t.html#af2e8cc51d43707399bf19226afca7cd4">psk_key_len</a>);</div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno">  313</span>      <span class="keywordflow">return</span> session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a8f8e37457b167cc8b95fadd7eeffd8d7">context</a>-&gt;<a class="code hl_variable" href="structcoap__context__t.html#af2e8cc51d43707399bf19226afca7cd4">psk_key_len</a>;</div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno">  314</span>    }</div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno">  315</span>  }</div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno">  316</span>  *identity_len = 0;</div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno">  317</span>  <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno">  318</span>}</div>
</div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno">  319</span> </div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno">  320</span><span class="keyword">static</span> <span class="keywordtype">size_t</span></div>
<div class="foldopen" id="foldopen00321" data-start="{" data-end="}">
<div class="line"><a id="l00321" name="l00321"></a><span class="lineno"><a class="line" href="net_8c.html#a66445578ff7073e4add30c588f0625f6">  321</a></span><a class="code hl_function" href="net_8c.html#a66445578ff7073e4add30c588f0625f6">coap_get_context_server_psk</a>(</div>
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno">  322</span>  <span class="keyword">const</span> <a class="code hl_struct" href="structcoap__session__t.html">coap_session_t</a> *session,</div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno">  323</span>  <span class="keyword">const</span> <a class="code hl_typedef" href="uthash_8h.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a> *identity, <span class="keywordtype">size_t</span> identity_len,</div>
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno">  324</span>  <a class="code hl_typedef" href="uthash_8h.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a> *psk, <span class="keywordtype">size_t</span> max_psk_len</div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno">  325</span>) {</div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno">  326</span>  (void)identity;</div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno">  327</span>  (void)identity_len;</div>
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno">  328</span>  <span class="keyword">const</span> <a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *ctx = session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a8f8e37457b167cc8b95fadd7eeffd8d7">context</a>;</div>
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno">  329</span>  <span class="keywordflow">if</span> (ctx &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#ab12d8e6ea4ec3ec2f196bd088d280f81">psk_key</a> &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#af2e8cc51d43707399bf19226afca7cd4">psk_key_len</a> &gt; 0 &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#af2e8cc51d43707399bf19226afca7cd4">psk_key_len</a> &lt;= max_psk_len) {</div>
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno">  330</span>    memcpy(psk, ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#ab12d8e6ea4ec3ec2f196bd088d280f81">psk_key</a>, ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#af2e8cc51d43707399bf19226afca7cd4">psk_key_len</a>);</div>
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno">  331</span>    <span class="keywordflow">return</span> ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#af2e8cc51d43707399bf19226afca7cd4">psk_key_len</a>;</div>
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno">  332</span>  }</div>
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno">  333</span>  <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno">  334</span>}</div>
</div>
<div class="line"><a id="l00335" name="l00335"></a><span class="lineno">  335</span> </div>
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno">  336</span><span class="keyword">static</span> <span class="keywordtype">size_t</span></div>
<div class="foldopen" id="foldopen00337" data-start="{" data-end="}">
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"><a class="line" href="net_8c.html#a80fe575cbbf1ef5468165c3b94aabad4">  337</a></span><a class="code hl_function" href="net_8c.html#a80fe575cbbf1ef5468165c3b94aabad4">coap_get_context_server_hint</a>(</div>
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno">  338</span>  <span class="keyword">const</span> <a class="code hl_struct" href="structcoap__session__t.html">coap_session_t</a> *session,</div>
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno">  339</span>  <a class="code hl_typedef" href="uthash_8h.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a> *hint, <span class="keywordtype">size_t</span> max_hint_len</div>
<div class="line"><a id="l00340" name="l00340"></a><span class="lineno">  340</span>) {</div>
<div class="line"><a id="l00341" name="l00341"></a><span class="lineno">  341</span>  <span class="keyword">const</span> <a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *ctx = session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a8f8e37457b167cc8b95fadd7eeffd8d7">context</a>;</div>
<div class="line"><a id="l00342" name="l00342"></a><span class="lineno">  342</span>  <span class="keywordflow">if</span> (ctx &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#ad724d5cbe61f367fc10162668c31c0a8">psk_hint</a> &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a0f715479db8671158a800ac14ef3ada3">psk_hint_len</a> &gt; 0 &amp;&amp; ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a0f715479db8671158a800ac14ef3ada3">psk_hint_len</a> &lt;= max_hint_len) {</div>
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno">  343</span>    memcpy(hint, ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#ad724d5cbe61f367fc10162668c31c0a8">psk_hint</a>, ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a0f715479db8671158a800ac14ef3ada3">psk_hint_len</a>);</div>
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno">  344</span>    <span class="keywordflow">return</span> ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a0f715479db8671158a800ac14ef3ada3">psk_hint_len</a>;</div>
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno">  345</span>  }</div>
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno">  346</span>  <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00347" name="l00347"></a><span class="lineno">  347</span>}</div>
</div>
<div class="line"><a id="l00348" name="l00348"></a><span class="lineno">  348</span> </div>
<div class="foldopen" id="foldopen00349" data-start="{" data-end="}">
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"><a class="line" href="net_8c.html#aad4939d0311c2ba59cb097bc236fada1">  349</a></span><span class="keywordtype">int</span> <a class="code hl_function" href="net_8c.html#aad4939d0311c2ba59cb097bc236fada1">coap_context_set_psk</a>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *ctx,</div>
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno">  350</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *hint,</div>
<div class="line"><a id="l00351" name="l00351"></a><span class="lineno">  351</span>  <span class="keyword">const</span> <a class="code hl_typedef" href="uthash_8h.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a> *key, <span class="keywordtype">size_t</span> key_len</div>
<div class="line"><a id="l00352" name="l00352"></a><span class="lineno">  352</span>) {</div>
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno">  353</span> </div>
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno">  354</span>  <span class="keywordflow">if</span> (ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#ad724d5cbe61f367fc10162668c31c0a8">psk_hint</a>)</div>
<div class="line"><a id="l00355" name="l00355"></a><span class="lineno">  355</span>    <a class="code hl_function" href="mem_8h.html#a1e46a1505bb13f03fdacd5d1b32502a6">coap_free</a>(ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#ad724d5cbe61f367fc10162668c31c0a8">psk_hint</a>);</div>
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno">  356</span>  ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#ad724d5cbe61f367fc10162668c31c0a8">psk_hint</a> = NULL;</div>
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno">  357</span>  ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a0f715479db8671158a800ac14ef3ada3">psk_hint_len</a> = 0;</div>
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno">  358</span> </div>
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno">  359</span>  <span class="keywordflow">if</span> (hint) {</div>
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno">  360</span>    <span class="keywordtype">size_t</span> hint_len = strlen(hint);</div>
<div class="line"><a id="l00361" name="l00361"></a><span class="lineno">  361</span>    ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#ad724d5cbe61f367fc10162668c31c0a8">psk_hint</a> = (<a class="code hl_typedef" href="uthash_8h.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a>*)<a class="code hl_function" href="mem_8h.html#a26f40acd710e6c964242c2e0cd789375">coap_malloc</a>(hint_len);</div>
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno">  362</span>    <span class="keywordflow">if</span> (ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#ad724d5cbe61f367fc10162668c31c0a8">psk_hint</a>) {</div>
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno">  363</span>      memcpy(ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#ad724d5cbe61f367fc10162668c31c0a8">psk_hint</a>, hint, hint_len);</div>
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno">  364</span>      ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a0f715479db8671158a800ac14ef3ada3">psk_hint_len</a> = hint_len;</div>
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno">  365</span>    } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno">  366</span>      <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446a0b4d9ad891dde7ae8deeb1704195858c">LOG_ERR</a>, <span class="stringliteral">&quot;No memory to store PSK hint\n&quot;</span>);</div>
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno">  367</span>      <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno">  368</span>    }</div>
<div class="line"><a id="l00369" name="l00369"></a><span class="lineno">  369</span>  }</div>
<div class="line"><a id="l00370" name="l00370"></a><span class="lineno">  370</span> </div>
<div class="line"><a id="l00371" name="l00371"></a><span class="lineno">  371</span>  <span class="keywordflow">if</span> (ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#ab12d8e6ea4ec3ec2f196bd088d280f81">psk_key</a>)</div>
<div class="line"><a id="l00372" name="l00372"></a><span class="lineno">  372</span>    <a class="code hl_function" href="mem_8h.html#a1e46a1505bb13f03fdacd5d1b32502a6">coap_free</a>(ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#ab12d8e6ea4ec3ec2f196bd088d280f81">psk_key</a>);</div>
<div class="line"><a id="l00373" name="l00373"></a><span class="lineno">  373</span>  ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#ab12d8e6ea4ec3ec2f196bd088d280f81">psk_key</a> = NULL;</div>
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno">  374</span>  ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#af2e8cc51d43707399bf19226afca7cd4">psk_key_len</a> = 0;</div>
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno">  375</span> </div>
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno">  376</span>  <span class="keywordflow">if</span> (key &amp;&amp; key_len &gt; 0) {</div>
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno">  377</span>    ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#ab12d8e6ea4ec3ec2f196bd088d280f81">psk_key</a> = (<a class="code hl_typedef" href="uthash_8h.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a> *)<a class="code hl_function" href="mem_8h.html#a26f40acd710e6c964242c2e0cd789375">coap_malloc</a>(key_len);</div>
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno">  378</span>    <span class="keywordflow">if</span> (ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#ab12d8e6ea4ec3ec2f196bd088d280f81">psk_key</a>) {</div>
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno">  379</span>      memcpy(ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#ab12d8e6ea4ec3ec2f196bd088d280f81">psk_key</a>, key, key_len);</div>
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno">  380</span>      ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#af2e8cc51d43707399bf19226afca7cd4">psk_key_len</a> = key_len;</div>
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno">  381</span>    } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno">  382</span>      <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446a0b4d9ad891dde7ae8deeb1704195858c">LOG_ERR</a>, <span class="stringliteral">&quot;No memory to store PSK key\n&quot;</span>);</div>
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno">  383</span>      <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno">  384</span>    }</div>
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno">  385</span>  }</div>
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno">  386</span>  <span class="keywordflow">if</span> (<a class="code hl_function" href="group__dtls.html#ga9def28dc6da3b77c14e89d63769ec085">coap_dtls_is_supported</a>()) {</div>
<div class="line"><a id="l00387" name="l00387"></a><span class="lineno">  387</span>    <span class="keywordflow">return</span> <a class="code hl_function" href="coap__notls_8c.html#a36896a2f4100c177e129ec8a5697aa95">coap_dtls_context_set_psk</a>(ctx, hint, <a class="code hl_enumvalue" href="group__dtls__internal.html#gga4dbea8aa6943bcf865990b5cebb6bfa4a07db1c396fbda1115124a22b3b9cb4da">COAP_DTLS_ROLE_SERVER</a>);</div>
<div class="line"><a id="l00388" name="l00388"></a><span class="lineno">  388</span>  }</div>
<div class="line"><a id="l00389" name="l00389"></a><span class="lineno">  389</span>  <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00390" name="l00390"></a><span class="lineno">  390</span>}</div>
</div>
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno">  391</span> </div>
<div class="foldopen" id="foldopen00392" data-start="{" data-end="}">
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"><a class="line" href="net_8c.html#a3e6893a08fe41f0ad6fbb84f14b10c36">  392</a></span><span class="keywordtype">int</span> <a class="code hl_function" href="net_8c.html#a3e6893a08fe41f0ad6fbb84f14b10c36">coap_context_set_pki</a>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *ctx,</div>
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno">  393</span>  <a class="code hl_struct" href="structcoap__dtls__pki__t.html">coap_dtls_pki_t</a>* setup_data</div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno">  394</span>) {</div>
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno">  395</span>  <span class="keywordflow">if</span> (!setup_data)</div>
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno">  396</span>    <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno">  397</span>  <span class="keywordflow">if</span> (setup_data-&gt;<a class="code hl_variable" href="structcoap__dtls__pki__t.html#a6311e9978d304e0aff143ebffe424ea4">version</a> != <a class="code hl_define" href="group__dtls.html#ga6494be4b6aa3c5d86232cb5ba19fef83">COAP_DTLS_PKI_SETUP_VERSION</a>) {</div>
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno">  398</span>    <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446a0b4d9ad891dde7ae8deeb1704195858c">LOG_ERR</a>, <span class="stringliteral">&quot;coap_context_set_pki: Wrong version of setup_data\n&quot;</span>);</div>
<div class="line"><a id="l00399" name="l00399"></a><span class="lineno">  399</span>    <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno">  400</span>  }</div>
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno">  401</span>  <span class="keywordflow">if</span> (<a class="code hl_function" href="group__dtls.html#ga9def28dc6da3b77c14e89d63769ec085">coap_dtls_is_supported</a>()) {</div>
<div class="line"><a id="l00402" name="l00402"></a><span class="lineno">  402</span>    <span class="keywordflow">return</span> <a class="code hl_function" href="coap__notls_8c.html#abff27cfd1dfb2359351f58244f929808">coap_dtls_context_set_pki</a>(ctx, setup_data, <a class="code hl_enumvalue" href="group__dtls__internal.html#gga4dbea8aa6943bcf865990b5cebb6bfa4a07db1c396fbda1115124a22b3b9cb4da">COAP_DTLS_ROLE_SERVER</a>);</div>
<div class="line"><a id="l00403" name="l00403"></a><span class="lineno">  403</span>  }</div>
<div class="line"><a id="l00404" name="l00404"></a><span class="lineno">  404</span>  <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00405" name="l00405"></a><span class="lineno">  405</span>}</div>
</div>
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno">  406</span> </div>
<div class="foldopen" id="foldopen00407" data-start="{" data-end="}">
<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"><a class="line" href="net_8c.html#aec68afda9ae15e22114f0bec81785f6f">  407</a></span><span class="keywordtype">int</span> <a class="code hl_function" href="net_8c.html#aec68afda9ae15e22114f0bec81785f6f">coap_context_set_pki_root_cas</a>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *ctx,</div>
<div class="line"><a id="l00408" name="l00408"></a><span class="lineno">  408</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *ca_file,</div>
<div class="line"><a id="l00409" name="l00409"></a><span class="lineno">  409</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *ca_dir</div>
<div class="line"><a id="l00410" name="l00410"></a><span class="lineno">  410</span>) {</div>
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno">  411</span>  <span class="keywordflow">if</span> (<a class="code hl_function" href="group__dtls.html#ga9def28dc6da3b77c14e89d63769ec085">coap_dtls_is_supported</a>()) {</div>
<div class="line"><a id="l00412" name="l00412"></a><span class="lineno">  412</span>    <span class="keywordflow">return</span> <a class="code hl_function" href="coap__notls_8c.html#a08c2d9a091673f0488b246c1019fa7db">coap_dtls_context_set_pki_root_cas</a>(ctx, ca_file, ca_dir);</div>
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno">  413</span>  }</div>
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno">  414</span>  <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno">  415</span>}</div>
</div>
<div class="line"><a id="l00416" name="l00416"></a><span class="lineno">  416</span> </div>
<div class="foldopen" id="foldopen00417" data-start="{" data-end="}">
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"><a class="line" href="net_8c.html#acc875c3095491f3835f4d252bd72999d">  417</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="net_8c.html#acc875c3095491f3835f4d252bd72999d">coap_context_set_keepalive</a>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *context, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> seconds) {</div>
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno">  418</span>  context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a653c88c399ffa1dc3661ffdb9daabc2a">ping_timeout</a> = seconds;</div>
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno">  419</span>}</div>
</div>
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno">  420</span> </div>
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno">  421</span><a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *</div>
<div class="foldopen" id="foldopen00422" data-start="{" data-end="}">
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"><a class="line" href="net_8c.html#a1ab369ca0a3c4fe7f8a9e0536346ff71">  422</a></span><a class="code hl_function" href="net_8c.html#a1ab369ca0a3c4fe7f8a9e0536346ff71">coap_new_context</a>(</div>
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno">  423</span>  <span class="keyword">const</span> <a class="code hl_struct" href="structcoap__address__t.html">coap_address_t</a> *listen_addr) {</div>
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno">  424</span>  <a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *c;</div>
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno">  425</span> </div>
<div class="line"><a id="l00426" name="l00426"></a><span class="lineno">  426</span><span class="preprocessor">#ifdef WITH_CONTIKI</span></div>
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno">  427</span>  <span class="keywordflow">if</span> (initialized)</div>
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno">  428</span>    <span class="keywordflow">return</span> NULL;</div>
<div class="line"><a id="l00429" name="l00429"></a><span class="lineno">  429</span><span class="preprocessor">#endif </span><span class="comment">/* WITH_CONTIKI */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno">  430</span> </div>
<div class="line"><a id="l00431" name="l00431"></a><span class="lineno">  431</span>  <a class="code hl_function" href="net_8c.html#aceceb550566e0ab9e184d09604a73bb6">coap_startup</a>();</div>
<div class="line"><a id="l00432" name="l00432"></a><span class="lineno">  432</span> </div>
<div class="line"><a id="l00433" name="l00433"></a><span class="lineno">  433</span><span class="preprocessor">#ifndef WITH_CONTIKI</span></div>
<div class="line"><a id="l00434" name="l00434"></a><span class="lineno">  434</span>  c = <a class="code hl_function" href="mem_8h.html#a9f9fd8d6cf24f9c45a5501aeba5acaf9">coap_malloc_type</a>(<a class="code hl_enumvalue" href="mem_8h.html#a703fa791ab7a14ff983df73b15e9c620a63028bf12af38811e0cb3ec7fe35e897">COAP_CONTEXT</a>, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a>));</div>
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno">  435</span><span class="preprocessor">#endif </span><span class="comment">/* not WITH_CONTIKI */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno">  436</span> </div>
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno">  437</span><span class="preprocessor">#ifndef WITH_CONTIKI</span></div>
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno">  438</span>  <span class="keywordflow">if</span> (!c) {</div>
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno">  439</span><span class="preprocessor">#ifndef NDEBUG</span></div>
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno">  440</span>    <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446adafd3577e2990c9b3db0cb7c2f20604c">LOG_EMERG</a>, <span class="stringliteral">&quot;coap_init: malloc:\n&quot;</span>);</div>
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno">  441</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno">  442</span>    <span class="keywordflow">return</span> NULL;</div>
<div class="line"><a id="l00443" name="l00443"></a><span class="lineno">  443</span>  }</div>
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno">  444</span><span class="preprocessor">#endif </span><span class="comment">/* not WITH_CONTIKI */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00445" name="l00445"></a><span class="lineno">  445</span><span class="preprocessor">#ifdef WITH_CONTIKI</span></div>
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno">  446</span>  coap_resources_init();</div>
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno">  447</span>  <a class="code hl_function" href="mem_8h.html#a65d0fc0fe6cad555b56e92ccb57613ba">coap_memory_init</a>();</div>
<div class="line"><a id="l00448" name="l00448"></a><span class="lineno">  448</span> </div>
<div class="line"><a id="l00449" name="l00449"></a><span class="lineno">  449</span>  c = &amp;the_coap_context;</div>
<div class="line"><a id="l00450" name="l00450"></a><span class="lineno">  450</span>  initialized = 1;</div>
<div class="line"><a id="l00451" name="l00451"></a><span class="lineno">  451</span><span class="preprocessor">#endif </span><span class="comment">/* WITH_CONTIKI */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno">  452</span> </div>
<div class="line"><a id="l00453" name="l00453"></a><span class="lineno">  453</span>  memset(c, 0, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a>));</div>
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno">  454</span> </div>
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno">  455</span>  <span class="keywordflow">if</span> (<a class="code hl_function" href="group__dtls.html#ga9def28dc6da3b77c14e89d63769ec085">coap_dtls_is_supported</a>()) {</div>
<div class="line"><a id="l00456" name="l00456"></a><span class="lineno">  456</span>    c-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a85e2737b90beb8afce13a6ef2bea87f4">dtls_context</a> = <a class="code hl_function" href="coap__notls_8c.html#a0671863eb92f2a37b1627b67564e82d4">coap_dtls_new_context</a>(c);</div>
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno">  457</span>    <span class="keywordflow">if</span> (!c-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a85e2737b90beb8afce13a6ef2bea87f4">dtls_context</a>) {</div>
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno">  458</span>      <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446adafd3577e2990c9b3db0cb7c2f20604c">LOG_EMERG</a>, <span class="stringliteral">&quot;coap_init: no DTLS context available\n&quot;</span>);</div>
<div class="line"><a id="l00459" name="l00459"></a><span class="lineno">  459</span>      <a class="code hl_function" href="net_8c.html#a4a0717822713783908dd33d300440b2e">coap_free_context</a>(c);</div>
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno">  460</span>      <span class="keywordflow">return</span> NULL;</div>
<div class="line"><a id="l00461" name="l00461"></a><span class="lineno">  461</span>    }</div>
<div class="line"><a id="l00462" name="l00462"></a><span class="lineno">  462</span>  }</div>
<div class="line"><a id="l00463" name="l00463"></a><span class="lineno">  463</span> </div>
<div class="line"><a id="l00464" name="l00464"></a><span class="lineno">  464</span>  <span class="comment">/* set default CSM timeout */</span></div>
<div class="line"><a id="l00465" name="l00465"></a><span class="lineno">  465</span>  c-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a2dafa5220ce428f5788c5d08adde4838">csm_timeout</a> = 30;</div>
<div class="line"><a id="l00466" name="l00466"></a><span class="lineno">  466</span> </div>
<div class="line"><a id="l00467" name="l00467"></a><span class="lineno">  467</span>  <span class="comment">/* initialize message id */</span></div>
<div class="line"><a id="l00468" name="l00468"></a><span class="lineno">  468</span>  <a class="code hl_define" href="group__prng.html#ga7c7d6401e43c811dacb517d51184c873">prng</a>((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> *)&amp;c-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa6aba2771228fc473f42ed37c73948e4">message_id</a>, <span class="keyword">sizeof</span>(uint16_t));</div>
<div class="line"><a id="l00469" name="l00469"></a><span class="lineno">  469</span> </div>
<div class="line"><a id="l00470" name="l00470"></a><span class="lineno">  470</span>  <span class="keywordflow">if</span> (listen_addr) {</div>
<div class="line"><a id="l00471" name="l00471"></a><span class="lineno">  471</span>    <a class="code hl_struct" href="structcoap__endpoint__t.html">coap_endpoint_t</a> *endpoint = <a class="code hl_function" href="coap__session_8c.html#a66470a0f926a4e96872e830ce793755c">coap_new_endpoint</a>(c, listen_addr, <a class="code hl_define" href="pdu_8h.html#aeda5d0dcadd6cbb8c13e1950fcff787a">COAP_PROTO_UDP</a>);</div>
<div class="line"><a id="l00472" name="l00472"></a><span class="lineno">  472</span>    <span class="keywordflow">if</span> (endpoint == NULL) {</div>
<div class="line"><a id="l00473" name="l00473"></a><span class="lineno">  473</span>      <span class="keywordflow">goto</span> onerror;</div>
<div class="line"><a id="l00474" name="l00474"></a><span class="lineno">  474</span>    }</div>
<div class="line"><a id="l00475" name="l00475"></a><span class="lineno">  475</span>  }</div>
<div class="line"><a id="l00476" name="l00476"></a><span class="lineno">  476</span> </div>
<div class="line"><a id="l00477" name="l00477"></a><span class="lineno">  477</span><span class="preprocessor">#if !defined(WITH_LWIP)</span></div>
<div class="line"><a id="l00478" name="l00478"></a><span class="lineno">  478</span>  c-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a75eedd9da9c35fbbffce222fac0d6f1a">network_send</a> = <a class="code hl_function" href="coap__io_8c.html#a9e9bc78d20872c6ea9cb8dddfcea45ad">coap_network_send</a>;</div>
<div class="line"><a id="l00479" name="l00479"></a><span class="lineno">  479</span>  c-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a1ad04b95f7ee48fa3575f142a81c3b99">network_read</a> = <a class="code hl_function" href="coap__io_8c.html#a9b8fa856db7113a97f74c726219c4be4">coap_network_read</a>;</div>
<div class="line"><a id="l00480" name="l00480"></a><span class="lineno">  480</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00481" name="l00481"></a><span class="lineno">  481</span> </div>
<div class="line"><a id="l00482" name="l00482"></a><span class="lineno">  482</span>  c-&gt;<a class="code hl_variable" href="structcoap__context__t.html#ae412c9932b9ced3c778d6029d21493c7">get_client_psk</a> = <a class="code hl_function" href="net_8c.html#a59140d9e3d88e6799879b6e4153b48a3">coap_get_session_client_psk</a>;</div>
<div class="line"><a id="l00483" name="l00483"></a><span class="lineno">  483</span>  c-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a71aa494865b061f72ec0ecd633aa4e7f">get_server_psk</a> = <a class="code hl_function" href="net_8c.html#a66445578ff7073e4add30c588f0625f6">coap_get_context_server_psk</a>;</div>
<div class="line"><a id="l00484" name="l00484"></a><span class="lineno">  484</span>  c-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aca05833745124e6987489c8ecfebcb63">get_server_hint</a> = <a class="code hl_function" href="net_8c.html#a80fe575cbbf1ef5468165c3b94aabad4">coap_get_context_server_hint</a>;</div>
<div class="line"><a id="l00485" name="l00485"></a><span class="lineno">  485</span> </div>
<div class="line"><a id="l00486" name="l00486"></a><span class="lineno">  486</span><span class="preprocessor">#ifdef WITH_CONTIKI</span></div>
<div class="line"><a id="l00487" name="l00487"></a><span class="lineno">  487</span>  process_start(&amp;coap_retransmit_process, (<span class="keywordtype">char</span> *)c);</div>
<div class="line"><a id="l00488" name="l00488"></a><span class="lineno">  488</span> </div>
<div class="line"><a id="l00489" name="l00489"></a><span class="lineno">  489</span>  PROCESS_CONTEXT_BEGIN(&amp;coap_retransmit_process);</div>
<div class="line"><a id="l00490" name="l00490"></a><span class="lineno">  490</span><span class="preprocessor">#ifndef WITHOUT_OBSERVE</span></div>
<div class="line"><a id="l00491" name="l00491"></a><span class="lineno">  491</span>  etimer_set(&amp;c-&gt;notify_timer, <a class="code hl_define" href="resource_8h.html#a8d07061a1bb4a55b64c517b5a0a02914">COAP_RESOURCE_CHECK_TIME</a> * <a class="code hl_define" href="group__clock.html#gabf672e8aaf725f9ccbc4fc0aa202a5bb">COAP_TICKS_PER_SECOND</a>);</div>
<div class="line"><a id="l00492" name="l00492"></a><span class="lineno">  492</span><span class="preprocessor">#endif </span><span class="comment">/* WITHOUT_OBSERVE */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00493" name="l00493"></a><span class="lineno">  493</span>  <span class="comment">/* the retransmit timer must be initialized to some large value */</span></div>
<div class="line"><a id="l00494" name="l00494"></a><span class="lineno">  494</span>  etimer_set(&amp;the_coap_context.retransmit_timer, 0xFFFF);</div>
<div class="line"><a id="l00495" name="l00495"></a><span class="lineno">  495</span>  PROCESS_CONTEXT_END(&amp;coap_retransmit_process);</div>
<div class="line"><a id="l00496" name="l00496"></a><span class="lineno">  496</span><span class="preprocessor">#endif </span><span class="comment">/* WITH_CONTIKI */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00497" name="l00497"></a><span class="lineno">  497</span> </div>
<div class="line"><a id="l00498" name="l00498"></a><span class="lineno">  498</span>  <span class="keywordflow">return</span> c;</div>
<div class="line"><a id="l00499" name="l00499"></a><span class="lineno">  499</span> </div>
<div class="line"><a id="l00500" name="l00500"></a><span class="lineno">  500</span>onerror:</div>
<div class="line"><a id="l00501" name="l00501"></a><span class="lineno">  501</span>  <a class="code hl_function" href="mem_8h.html#ae7214e0c73a4d4290525873e739ed422">coap_free_type</a>(<a class="code hl_enumvalue" href="mem_8h.html#a703fa791ab7a14ff983df73b15e9c620a63028bf12af38811e0cb3ec7fe35e897">COAP_CONTEXT</a>, c);</div>
<div class="line"><a id="l00502" name="l00502"></a><span class="lineno">  502</span>  <span class="keywordflow">return</span> NULL;</div>
<div class="line"><a id="l00503" name="l00503"></a><span class="lineno">  503</span>}</div>
</div>
<div class="line"><a id="l00504" name="l00504"></a><span class="lineno">  504</span> </div>
<div class="line"><a id="l00505" name="l00505"></a><span class="lineno">  505</span><span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen00506" data-start="{" data-end="}">
<div class="line"><a id="l00506" name="l00506"></a><span class="lineno"><a class="line" href="net_8c.html#aae36aa264dea395214cf7aabcee5fcd9">  506</a></span><a class="code hl_function" href="net_8c.html#aae36aa264dea395214cf7aabcee5fcd9">coap_set_app_data</a>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *ctx, <span class="keywordtype">void</span> *app_data) {</div>
<div class="line"><a id="l00507" name="l00507"></a><span class="lineno">  507</span>  <a class="code hl_define" href="mem_8c.html#a3d4ae9c092e117c836f52dc7d7cee574">assert</a>(ctx);</div>
<div class="line"><a id="l00508" name="l00508"></a><span class="lineno">  508</span>  ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a2e8ee7fcc1a46e74ea80484a7025a9c3">app</a> = app_data;</div>
<div class="line"><a id="l00509" name="l00509"></a><span class="lineno">  509</span>}</div>
</div>
<div class="line"><a id="l00510" name="l00510"></a><span class="lineno">  510</span> </div>
<div class="line"><a id="l00511" name="l00511"></a><span class="lineno">  511</span><span class="keywordtype">void</span> *</div>
<div class="foldopen" id="foldopen00512" data-start="{" data-end="}">
<div class="line"><a id="l00512" name="l00512"></a><span class="lineno"><a class="line" href="net_8c.html#ababc09609357f4709af861071fa6275f">  512</a></span><a class="code hl_function" href="net_8c.html#ababc09609357f4709af861071fa6275f">coap_get_app_data</a>(<span class="keyword">const</span> <a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *ctx) {</div>
<div class="line"><a id="l00513" name="l00513"></a><span class="lineno">  513</span>  <a class="code hl_define" href="mem_8c.html#a3d4ae9c092e117c836f52dc7d7cee574">assert</a>(ctx);</div>
<div class="line"><a id="l00514" name="l00514"></a><span class="lineno">  514</span>  <span class="keywordflow">return</span> ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a2e8ee7fcc1a46e74ea80484a7025a9c3">app</a>;</div>
<div class="line"><a id="l00515" name="l00515"></a><span class="lineno">  515</span>}</div>
</div>
<div class="line"><a id="l00516" name="l00516"></a><span class="lineno">  516</span> </div>
<div class="line"><a id="l00517" name="l00517"></a><span class="lineno">  517</span><span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen00518" data-start="{" data-end="}">
<div class="line"><a id="l00518" name="l00518"></a><span class="lineno"><a class="line" href="net_8c.html#a4a0717822713783908dd33d300440b2e">  518</a></span><a class="code hl_function" href="net_8c.html#a4a0717822713783908dd33d300440b2e">coap_free_context</a>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *context) {</div>
<div class="line"><a id="l00519" name="l00519"></a><span class="lineno">  519</span>  <a class="code hl_struct" href="structcoap__endpoint__t.html">coap_endpoint_t</a> *ep, *tmp;</div>
<div class="line"><a id="l00520" name="l00520"></a><span class="lineno">  520</span>  <a class="code hl_struct" href="structcoap__session__t.html">coap_session_t</a> *sp, *stmp;</div>
<div class="line"><a id="l00521" name="l00521"></a><span class="lineno">  521</span> </div>
<div class="line"><a id="l00522" name="l00522"></a><span class="lineno">  522</span>  <span class="keywordflow">if</span> (!context)</div>
<div class="line"><a id="l00523" name="l00523"></a><span class="lineno">  523</span>    <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l00524" name="l00524"></a><span class="lineno">  524</span> </div>
<div class="line"><a id="l00525" name="l00525"></a><span class="lineno">  525</span>  <a class="code hl_function" href="net_8c.html#a2c1e86998c712346baf2d116dbf1ac7f">coap_delete_all</a>(context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a>);</div>
<div class="line"><a id="l00526" name="l00526"></a><span class="lineno">  526</span> </div>
<div class="line"><a id="l00527" name="l00527"></a><span class="lineno">  527</span><span class="preprocessor">#ifdef WITH_LWIP</span></div>
<div class="line"><a id="l00528" name="l00528"></a><span class="lineno">  528</span>  context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a> = NULL;</div>
<div class="line"><a id="l00529" name="l00529"></a><span class="lineno">  529</span>  coap_retransmittimer_restart(context);</div>
<div class="line"><a id="l00530" name="l00530"></a><span class="lineno">  530</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00531" name="l00531"></a><span class="lineno">  531</span> </div>
<div class="line"><a id="l00532" name="l00532"></a><span class="lineno">  532</span>  <a class="code hl_function" href="resource_8c.html#a1fae3046ad94fce85a7ea23455328958">coap_delete_all_resources</a>(context);</div>
<div class="line"><a id="l00533" name="l00533"></a><span class="lineno">  533</span> </div>
<div class="line"><a id="l00534" name="l00534"></a><span class="lineno">  534</span>  <a class="code hl_define" href="utlist_8h.html#ad0a695664d31f0b929fd50b39ebcf0ef">LL_FOREACH_SAFE</a>(context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#ab7d5935f4a3e1c94fa6bb12bf6400006">endpoint</a>, ep, tmp) {</div>
<div class="line"><a id="l00535" name="l00535"></a><span class="lineno">  535</span>    <a class="code hl_function" href="net_8c.html#a157d58fe7840d7d7e36c40fff0825674">coap_free_endpoint</a>(ep);</div>
<div class="line"><a id="l00536" name="l00536"></a><span class="lineno">  536</span>  }</div>
<div class="line"><a id="l00537" name="l00537"></a><span class="lineno">  537</span> </div>
<div class="line"><a id="l00538" name="l00538"></a><span class="lineno">  538</span>  <a class="code hl_define" href="utlist_8h.html#ad0a695664d31f0b929fd50b39ebcf0ef">LL_FOREACH_SAFE</a>(context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a5984a41d68fae2a68703f6afd940671f">sessions</a>, sp, stmp) {</div>
<div class="line"><a id="l00539" name="l00539"></a><span class="lineno">  539</span>    <a class="code hl_function" href="coap__session_8c.html#a9aee135ba884d7c143b11bc42fd23e53">coap_session_release</a>(sp);</div>
<div class="line"><a id="l00540" name="l00540"></a><span class="lineno">  540</span>  }</div>
<div class="line"><a id="l00541" name="l00541"></a><span class="lineno">  541</span> </div>
<div class="line"><a id="l00542" name="l00542"></a><span class="lineno">  542</span>  <span class="keywordflow">if</span> (context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a85e2737b90beb8afce13a6ef2bea87f4">dtls_context</a>)</div>
<div class="line"><a id="l00543" name="l00543"></a><span class="lineno">  543</span>    <a class="code hl_function" href="coap__notls_8c.html#ab6dd0798202ab0ff55fc7024e80a72d1">coap_dtls_free_context</a>(context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a85e2737b90beb8afce13a6ef2bea87f4">dtls_context</a>);</div>
<div class="line"><a id="l00544" name="l00544"></a><span class="lineno">  544</span> </div>
<div class="line"><a id="l00545" name="l00545"></a><span class="lineno">  545</span>  <span class="keywordflow">if</span> (context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#ad724d5cbe61f367fc10162668c31c0a8">psk_hint</a>)</div>
<div class="line"><a id="l00546" name="l00546"></a><span class="lineno">  546</span>    <a class="code hl_function" href="mem_8h.html#a1e46a1505bb13f03fdacd5d1b32502a6">coap_free</a>(context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#ad724d5cbe61f367fc10162668c31c0a8">psk_hint</a>);</div>
<div class="line"><a id="l00547" name="l00547"></a><span class="lineno">  547</span> </div>
<div class="line"><a id="l00548" name="l00548"></a><span class="lineno">  548</span>  <span class="keywordflow">if</span> (context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#ab12d8e6ea4ec3ec2f196bd088d280f81">psk_key</a>)</div>
<div class="line"><a id="l00549" name="l00549"></a><span class="lineno">  549</span>    <a class="code hl_function" href="mem_8h.html#a1e46a1505bb13f03fdacd5d1b32502a6">coap_free</a>(context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#ab12d8e6ea4ec3ec2f196bd088d280f81">psk_key</a>);</div>
<div class="line"><a id="l00550" name="l00550"></a><span class="lineno">  550</span> </div>
<div class="line"><a id="l00551" name="l00551"></a><span class="lineno">  551</span><span class="preprocessor">#ifndef WITH_CONTIKI</span></div>
<div class="line"><a id="l00552" name="l00552"></a><span class="lineno">  552</span>  <a class="code hl_function" href="mem_8h.html#ae7214e0c73a4d4290525873e739ed422">coap_free_type</a>(<a class="code hl_enumvalue" href="mem_8h.html#a703fa791ab7a14ff983df73b15e9c620a63028bf12af38811e0cb3ec7fe35e897">COAP_CONTEXT</a>, context);</div>
<div class="line"><a id="l00553" name="l00553"></a><span class="lineno">  553</span><span class="preprocessor">#endif</span><span class="comment">/* not WITH_CONTIKI */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00554" name="l00554"></a><span class="lineno">  554</span><span class="preprocessor">#ifdef WITH_CONTIKI</span></div>
<div class="line"><a id="l00555" name="l00555"></a><span class="lineno">  555</span>  memset(&amp;the_coap_context, 0, <span class="keyword">sizeof</span>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a>));</div>
<div class="line"><a id="l00556" name="l00556"></a><span class="lineno">  556</span>  initialized = 0;</div>
<div class="line"><a id="l00557" name="l00557"></a><span class="lineno">  557</span><span class="preprocessor">#endif </span><span class="comment">/* WITH_CONTIKI */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00558" name="l00558"></a><span class="lineno">  558</span>}</div>
</div>
<div class="line"><a id="l00559" name="l00559"></a><span class="lineno">  559</span> </div>
<div class="line"><a id="l00560" name="l00560"></a><span class="lineno">  560</span><span class="keywordtype">int</span></div>
<div class="foldopen" id="foldopen00561" data-start="{" data-end="}">
<div class="line"><a id="l00561" name="l00561"></a><span class="lineno"><a class="line" href="net_8c.html#a9c6736c0418c3adf5e7f6fb76f000cfe">  561</a></span><a class="code hl_function" href="net_8c.html#a9c6736c0418c3adf5e7f6fb76f000cfe">coap_option_check_critical</a>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *ctx,</div>
<div class="line"><a id="l00562" name="l00562"></a><span class="lineno">  562</span>  <a class="code hl_struct" href="structcoap__pdu__t.html">coap_pdu_t</a> *pdu,</div>
<div class="line"><a id="l00563" name="l00563"></a><span class="lineno">  563</span>  <a class="code hl_typedef" href="group__opt__filter.html#ga001c5b06ae9e02996509516871cb69a8">coap_opt_filter_t</a> unknown) {</div>
<div class="line"><a id="l00564" name="l00564"></a><span class="lineno">  564</span> </div>
<div class="line"><a id="l00565" name="l00565"></a><span class="lineno">  565</span>  <a class="code hl_struct" href="structcoap__opt__iterator__t.html">coap_opt_iterator_t</a> opt_iter;</div>
<div class="line"><a id="l00566" name="l00566"></a><span class="lineno">  566</span>  <span class="keywordtype">int</span> ok = 1;</div>
<div class="line"><a id="l00567" name="l00567"></a><span class="lineno">  567</span> </div>
<div class="line"><a id="l00568" name="l00568"></a><span class="lineno">  568</span>  <a class="code hl_function" href="group__opt__filter.html#gaa76930050882387b0f5c7d0246e14440">coap_option_iterator_init</a>(pdu, &amp;opt_iter, <a class="code hl_define" href="group__opt__filter.html#ga81f470e9cdcc258799e10f6ed8a3ce5e">COAP_OPT_ALL</a>);</div>
<div class="line"><a id="l00569" name="l00569"></a><span class="lineno">  569</span> </div>
<div class="line"><a id="l00570" name="l00570"></a><span class="lineno">  570</span>  <span class="keywordflow">while</span> (<a class="code hl_function" href="group__opt__filter.html#ga19d4dbbc03ef362996964fbfdd1d4c7b">coap_option_next</a>(&amp;opt_iter)) {</div>
<div class="line"><a id="l00571" name="l00571"></a><span class="lineno">  571</span> </div>
<div class="line"><a id="l00572" name="l00572"></a><span class="lineno">  572</span>    <span class="comment">/* The following condition makes use of the fact that</span></div>
<div class="line"><a id="l00573" name="l00573"></a><span class="lineno">  573</span><span class="comment">     * coap_option_getb() returns -1 if type exceeds the bit-vector</span></div>
<div class="line"><a id="l00574" name="l00574"></a><span class="lineno">  574</span><span class="comment">     * filter. As the vector is supposed to be large enough to hold</span></div>
<div class="line"><a id="l00575" name="l00575"></a><span class="lineno">  575</span><span class="comment">     * the largest known option, we know that everything beyond is</span></div>
<div class="line"><a id="l00576" name="l00576"></a><span class="lineno">  576</span><span class="comment">     * bad.</span></div>
<div class="line"><a id="l00577" name="l00577"></a><span class="lineno">  577</span><span class="comment">     */</span></div>
<div class="line"><a id="l00578" name="l00578"></a><span class="lineno">  578</span>    <span class="keywordflow">if</span> (opt_iter.<a class="code hl_variable" href="structcoap__opt__iterator__t.html#a0df30f4a2bb85deb3d493fded6967b9d">type</a> &amp; 0x01) {</div>
<div class="line"><a id="l00579" name="l00579"></a><span class="lineno">  579</span>      <span class="comment">/* first check the built-in critical options */</span></div>
<div class="line"><a id="l00580" name="l00580"></a><span class="lineno">  580</span>      <span class="keywordflow">switch</span> (opt_iter.<a class="code hl_variable" href="structcoap__opt__iterator__t.html#a0df30f4a2bb85deb3d493fded6967b9d">type</a>) {</div>
<div class="line"><a id="l00581" name="l00581"></a><span class="lineno">  581</span>      <span class="keywordflow">case</span> <a class="code hl_define" href="pdu_8h.html#a046abe3d186a48612d11b098c515c33e">COAP_OPTION_IF_MATCH</a>:</div>
<div class="line"><a id="l00582" name="l00582"></a><span class="lineno">  582</span>      <span class="keywordflow">case</span> <a class="code hl_define" href="pdu_8h.html#a043c21277934001eacf3d14c0afb7485">COAP_OPTION_URI_HOST</a>:</div>
<div class="line"><a id="l00583" name="l00583"></a><span class="lineno">  583</span>      <span class="keywordflow">case</span> <a class="code hl_define" href="pdu_8h.html#a5324af9001287706f4742f67a7efba41">COAP_OPTION_IF_NONE_MATCH</a>:</div>
<div class="line"><a id="l00584" name="l00584"></a><span class="lineno">  584</span>      <span class="keywordflow">case</span> <a class="code hl_define" href="pdu_8h.html#ac422f368eb8783d6d704311ed95796db">COAP_OPTION_URI_PORT</a>:</div>
<div class="line"><a id="l00585" name="l00585"></a><span class="lineno">  585</span>      <span class="keywordflow">case</span> <a class="code hl_define" href="pdu_8h.html#a5e932b05dd36e6becb0a689f15d07583">COAP_OPTION_URI_PATH</a>:</div>
<div class="line"><a id="l00586" name="l00586"></a><span class="lineno">  586</span>      <span class="keywordflow">case</span> <a class="code hl_define" href="pdu_8h.html#a41904e7f47afc7036b2841f770240820">COAP_OPTION_URI_QUERY</a>:</div>
<div class="line"><a id="l00587" name="l00587"></a><span class="lineno">  587</span>      <span class="keywordflow">case</span> <a class="code hl_define" href="pdu_8h.html#ac97ca96f9b7abe9f196a72aa0ab4cfb0">COAP_OPTION_ACCEPT</a>:</div>
<div class="line"><a id="l00588" name="l00588"></a><span class="lineno">  588</span>      <span class="keywordflow">case</span> <a class="code hl_define" href="pdu_8h.html#adaa4bc1cb4312d809ecc99c8296fcef6">COAP_OPTION_PROXY_URI</a>:</div>
<div class="line"><a id="l00589" name="l00589"></a><span class="lineno">  589</span>      <span class="keywordflow">case</span> <a class="code hl_define" href="pdu_8h.html#a2fee152a1b03b715502c7a2db64d4f97">COAP_OPTION_PROXY_SCHEME</a>:</div>
<div class="line"><a id="l00590" name="l00590"></a><span class="lineno">  590</span>      <span class="keywordflow">case</span> <a class="code hl_define" href="pdu_8h.html#a078cdb892664dd5f7ea708b7f403fa8d">COAP_OPTION_BLOCK2</a>:</div>
<div class="line"><a id="l00591" name="l00591"></a><span class="lineno">  591</span>      <span class="keywordflow">case</span> <a class="code hl_define" href="pdu_8h.html#a235851793201aed201b79926c0d9377f">COAP_OPTION_BLOCK1</a>:</div>
<div class="line"><a id="l00592" name="l00592"></a><span class="lineno">  592</span>        <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00593" name="l00593"></a><span class="lineno">  593</span>      <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l00594" name="l00594"></a><span class="lineno">  594</span>        <span class="keywordflow">if</span> (<a class="code hl_function" href="group__opt__filter.html#ga3d3a4336ff55e111eae4eb2a1883a98b">coap_option_filter_get</a>(ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a907e852e962a4ecafc3706c6b0d2e2d2">known_options</a>, opt_iter.<a class="code hl_variable" href="structcoap__opt__iterator__t.html#a0df30f4a2bb85deb3d493fded6967b9d">type</a>) &lt;= 0) {</div>
<div class="line"><a id="l00595" name="l00595"></a><span class="lineno">  595</span>          <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, <span class="stringliteral">&quot;unknown critical option %d\n&quot;</span>, opt_iter.<a class="code hl_variable" href="structcoap__opt__iterator__t.html#a0df30f4a2bb85deb3d493fded6967b9d">type</a>);</div>
<div class="line"><a id="l00596" name="l00596"></a><span class="lineno">  596</span>          ok = 0;</div>
<div class="line"><a id="l00597" name="l00597"></a><span class="lineno">  597</span> </div>
<div class="line"><a id="l00598" name="l00598"></a><span class="lineno">  598</span>          <span class="comment">/* When opt_iter.type is beyond our known option range,</span></div>
<div class="line"><a id="l00599" name="l00599"></a><span class="lineno">  599</span><span class="comment">           * coap_option_filter_set() will return -1 and we are safe to leave</span></div>
<div class="line"><a id="l00600" name="l00600"></a><span class="lineno">  600</span><span class="comment">           * this loop. */</span></div>
<div class="line"><a id="l00601" name="l00601"></a><span class="lineno">  601</span>          <span class="keywordflow">if</span> (<a class="code hl_function" href="group__opt__filter.html#ga0170aecd699295f02affd5b280244088">coap_option_filter_set</a>(unknown, opt_iter.<a class="code hl_variable" href="structcoap__opt__iterator__t.html#a0df30f4a2bb85deb3d493fded6967b9d">type</a>) == -1) {</div>
<div class="line"><a id="l00602" name="l00602"></a><span class="lineno">  602</span>            <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00603" name="l00603"></a><span class="lineno">  603</span>          }</div>
<div class="line"><a id="l00604" name="l00604"></a><span class="lineno">  604</span>        }</div>
<div class="line"><a id="l00605" name="l00605"></a><span class="lineno">  605</span>      }</div>
<div class="line"><a id="l00606" name="l00606"></a><span class="lineno">  606</span>    }</div>
<div class="line"><a id="l00607" name="l00607"></a><span class="lineno">  607</span>  }</div>
<div class="line"><a id="l00608" name="l00608"></a><span class="lineno">  608</span> </div>
<div class="line"><a id="l00609" name="l00609"></a><span class="lineno">  609</span>  <span class="keywordflow">return</span> ok;</div>
<div class="line"><a id="l00610" name="l00610"></a><span class="lineno">  610</span>}</div>
</div>
<div class="line"><a id="l00611" name="l00611"></a><span class="lineno">  611</span> </div>
<div class="line"><a id="l00612" name="l00612"></a><span class="lineno">  612</span><a class="code hl_typedef" href="pdu_8h.html#ac60fb9284ace878df3db4a2d621d9a8d">coap_tid_t</a></div>
<div class="foldopen" id="foldopen00613" data-start="{" data-end="}">
<div class="line"><a id="l00613" name="l00613"></a><span class="lineno"><a class="line" href="net_8c.html#aba278b109415057d15196fa46afee970">  613</a></span><a class="code hl_function" href="net_8c.html#aba278b109415057d15196fa46afee970">coap_send_ack</a>(<a class="code hl_struct" href="structcoap__session__t.html">coap_session_t</a> *session, <a class="code hl_struct" href="structcoap__pdu__t.html">coap_pdu_t</a> *request) {</div>
<div class="line"><a id="l00614" name="l00614"></a><span class="lineno">  614</span>  <a class="code hl_struct" href="structcoap__pdu__t.html">coap_pdu_t</a> *response;</div>
<div class="line"><a id="l00615" name="l00615"></a><span class="lineno">  615</span>  <a class="code hl_typedef" href="pdu_8h.html#ac60fb9284ace878df3db4a2d621d9a8d">coap_tid_t</a> result = <a class="code hl_define" href="pdu_8h.html#afe70beb6b87ece4aca2d2735c759c625">COAP_INVALID_TID</a>;</div>
<div class="line"><a id="l00616" name="l00616"></a><span class="lineno">  616</span> </div>
<div class="line"><a id="l00617" name="l00617"></a><span class="lineno">  617</span>  <span class="keywordflow">if</span> (request &amp;&amp; request-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a0d5796b82924c69852860053020d0684">type</a> == <a class="code hl_define" href="pdu_8h.html#ab6ad49de4b14e7cf5bd0a2a1a87eef2f">COAP_MESSAGE_CON</a> &amp;&amp;</div>
<div class="line"><a id="l00618" name="l00618"></a><span class="lineno">  618</span>    <a class="code hl_define" href="coap__session_8h.html#a66dad7e75beba98bd59b096adbe39c35">COAP_PROTO_NOT_RELIABLE</a>(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a62089dd9c72836d322ae0ce0d0e7114f">proto</a>)) {</div>
<div class="line"><a id="l00619" name="l00619"></a><span class="lineno">  619</span>    response = <a class="code hl_function" href="pdu_8c.html#a4f019ad11b0f633524175488aecbd7d1">coap_pdu_init</a>(<a class="code hl_define" href="pdu_8h.html#ab2a2b75edf2611bc01464bb182e4d781">COAP_MESSAGE_ACK</a>, 0, request-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a65877a685b1f3428d3dc872af075ddc1">tid</a>, 0);</div>
<div class="line"><a id="l00620" name="l00620"></a><span class="lineno">  620</span>    <span class="keywordflow">if</span> (response)</div>
<div class="line"><a id="l00621" name="l00621"></a><span class="lineno">  621</span>      result = <a class="code hl_function" href="net_8c.html#ab0b0b5db03427c4313c01ec2b12cf8ed">coap_send</a>(session, response);</div>
<div class="line"><a id="l00622" name="l00622"></a><span class="lineno">  622</span>  }</div>
<div class="line"><a id="l00623" name="l00623"></a><span class="lineno">  623</span>  <span class="keywordflow">return</span> result;</div>
<div class="line"><a id="l00624" name="l00624"></a><span class="lineno">  624</span>}</div>
</div>
<div class="line"><a id="l00625" name="l00625"></a><span class="lineno">  625</span> </div>
<div class="line"><a id="l00626" name="l00626"></a><span class="lineno">  626</span>ssize_t</div>
<div class="foldopen" id="foldopen00627" data-start="{" data-end="}">
<div class="line"><a id="l00627" name="l00627"></a><span class="lineno"><a class="line" href="net_8c.html#aaf20c9b0b2ad3168c15e535a67ea3ce5">  627</a></span><a class="code hl_function" href="net_8c.html#aaf20c9b0b2ad3168c15e535a67ea3ce5">coap_session_send_pdu</a>(<a class="code hl_struct" href="structcoap__session__t.html">coap_session_t</a> *session, <a class="code hl_struct" href="structcoap__pdu__t.html">coap_pdu_t</a> *pdu) {</div>
<div class="line"><a id="l00628" name="l00628"></a><span class="lineno">  628</span>  ssize_t bytes_written = -1;</div>
<div class="line"><a id="l00629" name="l00629"></a><span class="lineno">  629</span>  <a class="code hl_define" href="mem_8c.html#a3d4ae9c092e117c836f52dc7d7cee574">assert</a>(pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a8e9b3dc1dc376c0d98a5e6940953cdc2">hdr_size</a> &gt; 0);</div>
<div class="line"><a id="l00630" name="l00630"></a><span class="lineno">  630</span>  <span class="keywordflow">switch</span>(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a62089dd9c72836d322ae0ce0d0e7114f">proto</a>) {</div>
<div class="line"><a id="l00631" name="l00631"></a><span class="lineno">  631</span>    <span class="keywordflow">case</span> <a class="code hl_define" href="pdu_8h.html#aeda5d0dcadd6cbb8c13e1950fcff787a">COAP_PROTO_UDP</a>:</div>
<div class="line"><a id="l00632" name="l00632"></a><span class="lineno">  632</span>      bytes_written = <a class="code hl_function" href="coap__session_8c.html#a43ad12697cacde3be9579f8253ca9ccf">coap_session_send</a>(session, pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a3c42c790abb815d722fbebcd7702a200">token</a> - pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a8e9b3dc1dc376c0d98a5e6940953cdc2">hdr_size</a>,</div>
<div class="line"><a id="l00633" name="l00633"></a><span class="lineno">  633</span>                                        pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#ac5018459a3078a5b896119d7464cb273">used_size</a> + pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a8e9b3dc1dc376c0d98a5e6940953cdc2">hdr_size</a>);</div>
<div class="line"><a id="l00634" name="l00634"></a><span class="lineno">  634</span>      <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00635" name="l00635"></a><span class="lineno">  635</span>    <span class="keywordflow">case</span> <a class="code hl_define" href="pdu_8h.html#ac10ea7ae66e5e549b47854417311b560">COAP_PROTO_DTLS</a>:</div>
<div class="line"><a id="l00636" name="l00636"></a><span class="lineno">  636</span>      bytes_written = <a class="code hl_function" href="coap__notls_8c.html#aab0e2b48071ed723e10cc8f10379abca">coap_dtls_send</a>(session, pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a3c42c790abb815d722fbebcd7702a200">token</a> - pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a8e9b3dc1dc376c0d98a5e6940953cdc2">hdr_size</a>,</div>
<div class="line"><a id="l00637" name="l00637"></a><span class="lineno">  637</span>                                     pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#ac5018459a3078a5b896119d7464cb273">used_size</a> + pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a8e9b3dc1dc376c0d98a5e6940953cdc2">hdr_size</a>);</div>
<div class="line"><a id="l00638" name="l00638"></a><span class="lineno">  638</span>      <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00639" name="l00639"></a><span class="lineno">  639</span>    <span class="keywordflow">case</span> <a class="code hl_define" href="pdu_8h.html#a1dd5fe6cc335ea31d49f3eb469a5990a">COAP_PROTO_TCP</a>:</div>
<div class="line"><a id="l00640" name="l00640"></a><span class="lineno">  640</span>      bytes_written = <a class="code hl_function" href="coap__session_8c.html#adb19e1f2544b8b01424fa2e9dce41e7b">coap_session_write</a>(session, pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a3c42c790abb815d722fbebcd7702a200">token</a> - pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a8e9b3dc1dc376c0d98a5e6940953cdc2">hdr_size</a>,</div>
<div class="line"><a id="l00641" name="l00641"></a><span class="lineno">  641</span>                                         pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#ac5018459a3078a5b896119d7464cb273">used_size</a> + pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a8e9b3dc1dc376c0d98a5e6940953cdc2">hdr_size</a>);</div>
<div class="line"><a id="l00642" name="l00642"></a><span class="lineno">  642</span>      <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00643" name="l00643"></a><span class="lineno">  643</span>    <span class="keywordflow">case</span> <a class="code hl_define" href="pdu_8h.html#a6c9a1dd7b311e5a420e3a7c36b918a02">COAP_PROTO_TLS</a>:</div>
<div class="line"><a id="l00644" name="l00644"></a><span class="lineno">  644</span>      bytes_written = <a class="code hl_function" href="coap__notls_8c.html#adaea05db98df31bd685353eb7099f356">coap_tls_write</a>(session, pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a3c42c790abb815d722fbebcd7702a200">token</a> - pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a8e9b3dc1dc376c0d98a5e6940953cdc2">hdr_size</a>,</div>
<div class="line"><a id="l00645" name="l00645"></a><span class="lineno">  645</span>                                     pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#ac5018459a3078a5b896119d7464cb273">used_size</a> + pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a8e9b3dc1dc376c0d98a5e6940953cdc2">hdr_size</a>);</div>
<div class="line"><a id="l00646" name="l00646"></a><span class="lineno">  646</span>      <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00647" name="l00647"></a><span class="lineno">  647</span>    <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l00648" name="l00648"></a><span class="lineno">  648</span>      <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l00649" name="l00649"></a><span class="lineno">  649</span>  }</div>
<div class="line"><a id="l00650" name="l00650"></a><span class="lineno">  650</span>  <a class="code hl_function" href="group__logging.html#ga3123fcde8310c0f7cb48897a683baef6">coap_show_pdu</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, pdu);</div>
<div class="line"><a id="l00651" name="l00651"></a><span class="lineno">  651</span>  <span class="keywordflow">return</span> bytes_written;</div>
<div class="line"><a id="l00652" name="l00652"></a><span class="lineno">  652</span>}</div>
</div>
<div class="line"><a id="l00653" name="l00653"></a><span class="lineno">  653</span> </div>
<div class="line"><a id="l00654" name="l00654"></a><span class="lineno">  654</span><span class="keyword">static</span> ssize_t</div>
<div class="foldopen" id="foldopen00655" data-start="{" data-end="}">
<div class="line"><a id="l00655" name="l00655"></a><span class="lineno"><a class="line" href="net_8c.html#a0c600aed61c8a8402d31ef795df3b0b6">  655</a></span><a class="code hl_function" href="net_8c.html#a0c600aed61c8a8402d31ef795df3b0b6">coap_send_pdu</a>(<a class="code hl_struct" href="structcoap__session__t.html">coap_session_t</a> *session, <a class="code hl_struct" href="structcoap__pdu__t.html">coap_pdu_t</a> *pdu, <a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> *node) {</div>
<div class="line"><a id="l00656" name="l00656"></a><span class="lineno">  656</span>  ssize_t bytes_written;</div>
<div class="line"><a id="l00657" name="l00657"></a><span class="lineno">  657</span> </div>
<div class="line"><a id="l00658" name="l00658"></a><span class="lineno">  658</span><span class="preprocessor">#ifdef WITH_LWIP</span></div>
<div class="line"><a id="l00659" name="l00659"></a><span class="lineno">  659</span> </div>
<div class="line"><a id="l00660" name="l00660"></a><span class="lineno">  660</span>  <a class="code hl_struct" href="structcoap__socket__t.html">coap_socket_t</a> *sock = &amp;session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a29f92f61ab5c863c90254ce71e3859eb">sock</a>;</div>
<div class="line"><a id="l00661" name="l00661"></a><span class="lineno">  661</span>  <span class="keywordflow">if</span> (sock-&gt;<a class="code hl_variable" href="structcoap__socket__t.html#afc857e7bf0427e0d08e2be5604bc5516">flags</a> == <a class="code hl_define" href="coap__io_8h.html#af88ca6b7683ad462a6187ccda018f75e">COAP_SOCKET_EMPTY</a>) {</div>
<div class="line"><a id="l00662" name="l00662"></a><span class="lineno">  662</span>    <a class="code hl_define" href="mem_8c.html#a3d4ae9c092e117c836f52dc7d7cee574">assert</a>(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a351217007fcd02e549b73569577fa5a1">endpoint</a> != NULL);</div>
<div class="line"><a id="l00663" name="l00663"></a><span class="lineno">  663</span>    sock = &amp;session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a351217007fcd02e549b73569577fa5a1">endpoint</a>-&gt;<a class="code hl_variable" href="structcoap__endpoint__t.html#ad0d9d4c7a4ff91f4e5149ea82cc02a38">sock</a>;</div>
<div class="line"><a id="l00664" name="l00664"></a><span class="lineno">  664</span>  }</div>
<div class="line"><a id="l00665" name="l00665"></a><span class="lineno">  665</span>  <span class="keywordflow">if</span> (pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a0d5796b82924c69852860053020d0684">type</a> == <a class="code hl_define" href="pdu_8h.html#ab6ad49de4b14e7cf5bd0a2a1a87eef2f">COAP_MESSAGE_CON</a> &amp;&amp; <a class="code hl_define" href="coap__session_8h.html#a66dad7e75beba98bd59b096adbe39c35">COAP_PROTO_NOT_RELIABLE</a>(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a62089dd9c72836d322ae0ce0d0e7114f">proto</a>))</div>
<div class="line"><a id="l00666" name="l00666"></a><span class="lineno">  666</span>    session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#ab360022130771a166ea0e93a1876ced4">con_active</a>++;</div>
<div class="line"><a id="l00667" name="l00667"></a><span class="lineno">  667</span> </div>
<div class="line"><a id="l00668" name="l00668"></a><span class="lineno">  668</span>  bytes_written = coap_socket_send_pdu(sock, session, pdu);</div>
<div class="line"><a id="l00669" name="l00669"></a><span class="lineno">  669</span>  <span class="keywordflow">if</span> (<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a> &lt;= <a class="code hl_function" href="group__logging.html#ga10c3fbd56b0eb3a8722b27a65fc9b0ce">coap_get_log_level</a>()) {</div>
<div class="line"><a id="l00670" name="l00670"></a><span class="lineno">  670</span>    <a class="code hl_function" href="group__logging.html#ga3123fcde8310c0f7cb48897a683baef6">coap_show_pdu</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, pdu);</div>
<div class="line"><a id="l00671" name="l00671"></a><span class="lineno">  671</span>  }</div>
<div class="line"><a id="l00672" name="l00672"></a><span class="lineno">  672</span>  <a class="code hl_function" href="group__clock.html#ga350826988e63ff446a2a84034ecdf43d">coap_ticks</a>(&amp;session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a28348c0c301bce7201403aa5545ef2b6">last_rx_tx</a>);</div>
<div class="line"><a id="l00673" name="l00673"></a><span class="lineno">  673</span> </div>
<div class="line"><a id="l00674" name="l00674"></a><span class="lineno">  674</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00675" name="l00675"></a><span class="lineno">  675</span> </div>
<div class="line"><a id="l00676" name="l00676"></a><span class="lineno">  676</span>  <span class="comment">/* Do not send error responses for requests that were received via</span></div>
<div class="line"><a id="l00677" name="l00677"></a><span class="lineno">  677</span><span class="comment">  * IP multicast.</span></div>
<div class="line"><a id="l00678" name="l00678"></a><span class="lineno">  678</span><span class="comment">  * FIXME: If No-Response option indicates interest, these responses</span></div>
<div class="line"><a id="l00679" name="l00679"></a><span class="lineno">  679</span><span class="comment">  *        must not be dropped. */</span></div>
<div class="line"><a id="l00680" name="l00680"></a><span class="lineno">  680</span>  <span class="keywordflow">if</span> (<a class="code hl_function" href="address_8c.html#a5b47d6fe47a54a0798eddb9ea77005ea">coap_is_mcast</a>(&amp;session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a527f7977596333c89e623c3deb621d25">local_addr</a>) &amp;&amp;</div>
<div class="line"><a id="l00681" name="l00681"></a><span class="lineno">  681</span>    <a class="code hl_define" href="pdu_8h.html#a69a63fe3b38001521e87a71b2011750b">COAP_RESPONSE_CLASS</a>(pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a69c774f85355eeacc4742355527a8097">code</a>) &gt; 2) {</div>
<div class="line"><a id="l00682" name="l00682"></a><span class="lineno">  682</span>    <span class="keywordflow">return</span> <a class="code hl_define" href="pdu_8h.html#a489f4c3eb8344011cbc20bd0768d14ad">COAP_DROPPED_RESPONSE</a>;</div>
<div class="line"><a id="l00683" name="l00683"></a><span class="lineno">  683</span>  }</div>
<div class="line"><a id="l00684" name="l00684"></a><span class="lineno">  684</span> </div>
<div class="line"><a id="l00685" name="l00685"></a><span class="lineno">  685</span>  <span class="keywordflow">if</span> (session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a382b6afaed298581b57d62aaf043cfe3">state</a> == <a class="code hl_define" href="coap__session_8h.html#a8a92a2707bab8b00c7adc43291b587c0">COAP_SESSION_STATE_NONE</a>) {</div>
<div class="line"><a id="l00686" name="l00686"></a><span class="lineno">  686</span>    <span class="keywordflow">if</span> (session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a62089dd9c72836d322ae0ce0d0e7114f">proto</a> == <a class="code hl_define" href="pdu_8h.html#ac10ea7ae66e5e549b47854417311b560">COAP_PROTO_DTLS</a> &amp;&amp; !session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a9eb6890809e9aa01d225691bb4ae97db">tls</a>) {</div>
<div class="line"><a id="l00687" name="l00687"></a><span class="lineno">  687</span>      session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a9eb6890809e9aa01d225691bb4ae97db">tls</a> = <a class="code hl_function" href="coap__notls_8c.html#ae4b316b8d30a716c6faeceb1cb8d9b8d">coap_dtls_new_client_session</a>(session);</div>
<div class="line"><a id="l00688" name="l00688"></a><span class="lineno">  688</span>      <span class="keywordflow">if</span> (session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a9eb6890809e9aa01d225691bb4ae97db">tls</a>) {</div>
<div class="line"><a id="l00689" name="l00689"></a><span class="lineno">  689</span>        session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a382b6afaed298581b57d62aaf043cfe3">state</a> = <a class="code hl_define" href="coap__session_8h.html#a3b04568c8db8bcced69f14b813805b7f">COAP_SESSION_STATE_HANDSHAKE</a>;</div>
<div class="line"><a id="l00690" name="l00690"></a><span class="lineno">  690</span>        <span class="keywordflow">return</span> <a class="code hl_function" href="coap__session_8c.html#a192c2ce0f620200797ee34ac6f5d04c7">coap_session_delay_pdu</a>(session, pdu, node);</div>
<div class="line"><a id="l00691" name="l00691"></a><span class="lineno">  691</span>      }</div>
<div class="line"><a id="l00692" name="l00692"></a><span class="lineno">  692</span>      <a class="code hl_function" href="net_8c.html#a5e2cee998ccf618ac07aa54f5e5f8743">coap_handle_event</a>(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a8f8e37457b167cc8b95fadd7eeffd8d7">context</a>, <a class="code hl_define" href="group__events.html#ga4b7987047870eb07d52a9bb7a04b04ad">COAP_EVENT_DTLS_ERROR</a>, session);</div>
<div class="line"><a id="l00693" name="l00693"></a><span class="lineno">  693</span>      <span class="keywordflow">return</span> -1;</div>
<div class="line"><a id="l00694" name="l00694"></a><span class="lineno">  694</span>    } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(<a class="code hl_define" href="coap__session_8h.html#a7de76e6002dd8d1ca53f3302e4e33d21">COAP_PROTO_RELIABLE</a>(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a62089dd9c72836d322ae0ce0d0e7114f">proto</a>)) {</div>
<div class="line"><a id="l00695" name="l00695"></a><span class="lineno">  695</span>      <span class="keywordflow">if</span> (!<a class="code hl_function" href="coap__io_8c.html#a85ec542c39fda4a6a5346c7801bf0ecd">coap_socket_connect_tcp1</a>(</div>
<div class="line"><a id="l00696" name="l00696"></a><span class="lineno">  696</span>        &amp;session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a29f92f61ab5c863c90254ce71e3859eb">sock</a>, &amp;session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#abc8462729a3fcdf21edc2aae125c04b8">local_if</a>, &amp;session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a5e1b647f8b5ce42ea7a0d0893fb3504a">remote_addr</a>,</div>
<div class="line"><a id="l00697" name="l00697"></a><span class="lineno">  697</span>        session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a62089dd9c72836d322ae0ce0d0e7114f">proto</a> == <a class="code hl_define" href="pdu_8h.html#a6c9a1dd7b311e5a420e3a7c36b918a02">COAP_PROTO_TLS</a> ? <a class="code hl_define" href="pdu_8h.html#ab6e43ca6d4347d1ecb3520098adfde8a">COAPS_DEFAULT_PORT</a> : <a class="code hl_define" href="pdu_8h.html#a347c9249800d5f80f75dbc7d3df96bb0">COAP_DEFAULT_PORT</a>,</div>
<div class="line"><a id="l00698" name="l00698"></a><span class="lineno">  698</span>        &amp;session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a527f7977596333c89e623c3deb621d25">local_addr</a>, &amp;session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a5e1b647f8b5ce42ea7a0d0893fb3504a">remote_addr</a></div>
<div class="line"><a id="l00699" name="l00699"></a><span class="lineno">  699</span>      )) {</div>
<div class="line"><a id="l00700" name="l00700"></a><span class="lineno">  700</span>        <a class="code hl_function" href="net_8c.html#a5e2cee998ccf618ac07aa54f5e5f8743">coap_handle_event</a>(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a8f8e37457b167cc8b95fadd7eeffd8d7">context</a>, <a class="code hl_define" href="group__events.html#gaa06f99fe2908c1d1f14e114ebaa13bc6">COAP_EVENT_TCP_FAILED</a>, session);</div>
<div class="line"><a id="l00701" name="l00701"></a><span class="lineno">  701</span>        <span class="keywordflow">return</span> -1;</div>
<div class="line"><a id="l00702" name="l00702"></a><span class="lineno">  702</span>      }</div>
<div class="line"><a id="l00703" name="l00703"></a><span class="lineno">  703</span>      session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#abe9912fc16ffc9c9f54b9cc0e898d0fb">last_ping</a> = 0;</div>
<div class="line"><a id="l00704" name="l00704"></a><span class="lineno">  704</span>      session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a017ee7bfd8942df7a1c656fe52d5ac6a">last_pong</a> = 0;</div>
<div class="line"><a id="l00705" name="l00705"></a><span class="lineno">  705</span>      session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#af8b4ea1655029f581c5a85c93f4c742d">csm_tx</a> = 0;</div>
<div class="line"><a id="l00706" name="l00706"></a><span class="lineno">  706</span>      <a class="code hl_function" href="group__clock.html#ga350826988e63ff446a2a84034ecdf43d">coap_ticks</a>( &amp;session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a28348c0c301bce7201403aa5545ef2b6">last_rx_tx</a> );</div>
<div class="line"><a id="l00707" name="l00707"></a><span class="lineno">  707</span>      <span class="keywordflow">if</span> ((session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a29f92f61ab5c863c90254ce71e3859eb">sock</a>.<a class="code hl_variable" href="structcoap__socket__t.html#afc857e7bf0427e0d08e2be5604bc5516">flags</a> &amp; <a class="code hl_define" href="coap__io_8h.html#add6fabbe265b4a46a64d192aa545bf5f">COAP_SOCKET_WANT_CONNECT</a>) != 0) {</div>
<div class="line"><a id="l00708" name="l00708"></a><span class="lineno">  708</span>        session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a382b6afaed298581b57d62aaf043cfe3">state</a> = <a class="code hl_define" href="coap__session_8h.html#a7197e71853281bff72e84261018f81d6">COAP_SESSION_STATE_CONNECTING</a>;</div>
<div class="line"><a id="l00709" name="l00709"></a><span class="lineno">  709</span>        <span class="keywordflow">return</span> <a class="code hl_function" href="coap__session_8c.html#a192c2ce0f620200797ee34ac6f5d04c7">coap_session_delay_pdu</a>(session, pdu, node);</div>
<div class="line"><a id="l00710" name="l00710"></a><span class="lineno">  710</span>      }</div>
<div class="line"><a id="l00711" name="l00711"></a><span class="lineno">  711</span>      <a class="code hl_function" href="net_8c.html#a5e2cee998ccf618ac07aa54f5e5f8743">coap_handle_event</a>(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a8f8e37457b167cc8b95fadd7eeffd8d7">context</a>, <a class="code hl_define" href="group__events.html#gaf2a1235d6d66e20095721a60c5ccdf84">COAP_EVENT_TCP_CONNECTED</a>, session);</div>
<div class="line"><a id="l00712" name="l00712"></a><span class="lineno">  712</span>      <span class="keywordflow">if</span> (session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a62089dd9c72836d322ae0ce0d0e7114f">proto</a> == <a class="code hl_define" href="pdu_8h.html#a6c9a1dd7b311e5a420e3a7c36b918a02">COAP_PROTO_TLS</a>) {</div>
<div class="line"><a id="l00713" name="l00713"></a><span class="lineno">  713</span>        <span class="keywordtype">int</span> connected = 0;</div>
<div class="line"><a id="l00714" name="l00714"></a><span class="lineno">  714</span>        session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a382b6afaed298581b57d62aaf043cfe3">state</a> = <a class="code hl_define" href="coap__session_8h.html#a3b04568c8db8bcced69f14b813805b7f">COAP_SESSION_STATE_HANDSHAKE</a>;</div>
<div class="line"><a id="l00715" name="l00715"></a><span class="lineno">  715</span>        session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a9eb6890809e9aa01d225691bb4ae97db">tls</a> = <a class="code hl_function" href="coap__notls_8c.html#af7d70ee719bade4e0a9c2f92b18fc2d6">coap_tls_new_client_session</a>(session, &amp;connected);</div>
<div class="line"><a id="l00716" name="l00716"></a><span class="lineno">  716</span>        <span class="keywordflow">if</span> (session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a9eb6890809e9aa01d225691bb4ae97db">tls</a>) {</div>
<div class="line"><a id="l00717" name="l00717"></a><span class="lineno">  717</span>          <span class="keywordflow">if</span> (connected) {</div>
<div class="line"><a id="l00718" name="l00718"></a><span class="lineno">  718</span>            <a class="code hl_function" href="net_8c.html#a5e2cee998ccf618ac07aa54f5e5f8743">coap_handle_event</a>(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a8f8e37457b167cc8b95fadd7eeffd8d7">context</a>, <a class="code hl_define" href="group__events.html#gaeedad13a6a9e652948097bb1f8290229">COAP_EVENT_DTLS_CONNECTED</a>, session);</div>
<div class="line"><a id="l00719" name="l00719"></a><span class="lineno">  719</span>            <a class="code hl_function" href="coap__session_8c.html#a2f455ec1572982a5ae404beac0cfbd53">coap_session_send_csm</a>(session);</div>
<div class="line"><a id="l00720" name="l00720"></a><span class="lineno">  720</span>          }</div>
<div class="line"><a id="l00721" name="l00721"></a><span class="lineno">  721</span>          <span class="keywordflow">return</span> <a class="code hl_function" href="coap__session_8c.html#a192c2ce0f620200797ee34ac6f5d04c7">coap_session_delay_pdu</a>(session, pdu, node);</div>
<div class="line"><a id="l00722" name="l00722"></a><span class="lineno">  722</span>        }</div>
<div class="line"><a id="l00723" name="l00723"></a><span class="lineno">  723</span>        <a class="code hl_function" href="net_8c.html#a5e2cee998ccf618ac07aa54f5e5f8743">coap_handle_event</a>(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a8f8e37457b167cc8b95fadd7eeffd8d7">context</a>, <a class="code hl_define" href="group__events.html#ga4b7987047870eb07d52a9bb7a04b04ad">COAP_EVENT_DTLS_ERROR</a>, session);</div>
<div class="line"><a id="l00724" name="l00724"></a><span class="lineno">  724</span>        <a class="code hl_function" href="coap__session_8c.html#ad3377d3198c10fa086502035ded9c268">coap_session_disconnected</a>(session, <a class="code hl_enumvalue" href="coap__io_8h.html#a7ff2bb32137ca684be5539c156bdc418a60a6eebe19b2f6701ed4fcc58886d830">COAP_NACK_TLS_FAILED</a>);</div>
<div class="line"><a id="l00725" name="l00725"></a><span class="lineno">  725</span>        <span class="keywordflow">return</span> -1;</div>
<div class="line"><a id="l00726" name="l00726"></a><span class="lineno">  726</span>      } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00727" name="l00727"></a><span class="lineno">  727</span>        <a class="code hl_function" href="coap__session_8c.html#a2f455ec1572982a5ae404beac0cfbd53">coap_session_send_csm</a>(session);</div>
<div class="line"><a id="l00728" name="l00728"></a><span class="lineno">  728</span>      }</div>
<div class="line"><a id="l00729" name="l00729"></a><span class="lineno">  729</span>    } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00730" name="l00730"></a><span class="lineno">  730</span>      <span class="keywordflow">return</span> -1;</div>
<div class="line"><a id="l00731" name="l00731"></a><span class="lineno">  731</span>    }</div>
<div class="line"><a id="l00732" name="l00732"></a><span class="lineno">  732</span>  }</div>
<div class="line"><a id="l00733" name="l00733"></a><span class="lineno">  733</span> </div>
<div class="line"><a id="l00734" name="l00734"></a><span class="lineno">  734</span>  <span class="keywordflow">if</span> (session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a382b6afaed298581b57d62aaf043cfe3">state</a> != <a class="code hl_define" href="coap__session_8h.html#a954b835ecd156cde63fee7d5f279ab32">COAP_SESSION_STATE_ESTABLISHED</a> ||</div>
<div class="line"><a id="l00735" name="l00735"></a><span class="lineno">  735</span>      (pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a0d5796b82924c69852860053020d0684">type</a> == <a class="code hl_define" href="pdu_8h.html#ab6ad49de4b14e7cf5bd0a2a1a87eef2f">COAP_MESSAGE_CON</a> &amp;&amp; session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#ab360022130771a166ea0e93a1876ced4">con_active</a> &gt;= <a class="code hl_define" href="group__cc.html#ga9d5bcf0eaa2f8b5d0c8f0c7b0e76aac9">COAP_DEFAULT_NSTART</a>)) {</div>
<div class="line"><a id="l00736" name="l00736"></a><span class="lineno">  736</span>    <span class="keywordflow">return</span> <a class="code hl_function" href="coap__session_8c.html#a192c2ce0f620200797ee34ac6f5d04c7">coap_session_delay_pdu</a>(session, pdu, node);</div>
<div class="line"><a id="l00737" name="l00737"></a><span class="lineno">  737</span>  }</div>
<div class="line"><a id="l00738" name="l00738"></a><span class="lineno">  738</span> </div>
<div class="line"><a id="l00739" name="l00739"></a><span class="lineno">  739</span>  <span class="keywordflow">if</span> ((session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a29f92f61ab5c863c90254ce71e3859eb">sock</a>.<a class="code hl_variable" href="structcoap__socket__t.html#afc857e7bf0427e0d08e2be5604bc5516">flags</a> &amp; <a class="code hl_define" href="coap__io_8h.html#a3d4ed50cc653ac76015d00c1a9fac1ec">COAP_SOCKET_NOT_EMPTY</a>) &amp;&amp;</div>
<div class="line"><a id="l00740" name="l00740"></a><span class="lineno">  740</span>    (session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a29f92f61ab5c863c90254ce71e3859eb">sock</a>.<a class="code hl_variable" href="structcoap__socket__t.html#afc857e7bf0427e0d08e2be5604bc5516">flags</a> &amp; <a class="code hl_define" href="coap__io_8h.html#ac5bc2439a8bdf2a1722708bca47eb083">COAP_SOCKET_WANT_WRITE</a>))</div>
<div class="line"><a id="l00741" name="l00741"></a><span class="lineno">  741</span>    <span class="keywordflow">return</span> <a class="code hl_function" href="coap__session_8c.html#a192c2ce0f620200797ee34ac6f5d04c7">coap_session_delay_pdu</a>(session, pdu, node);</div>
<div class="line"><a id="l00742" name="l00742"></a><span class="lineno">  742</span> </div>
<div class="line"><a id="l00743" name="l00743"></a><span class="lineno">  743</span>  <span class="keywordflow">if</span> (pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a0d5796b82924c69852860053020d0684">type</a> == <a class="code hl_define" href="pdu_8h.html#ab6ad49de4b14e7cf5bd0a2a1a87eef2f">COAP_MESSAGE_CON</a> &amp;&amp; <a class="code hl_define" href="coap__session_8h.html#a66dad7e75beba98bd59b096adbe39c35">COAP_PROTO_NOT_RELIABLE</a>(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a62089dd9c72836d322ae0ce0d0e7114f">proto</a>))</div>
<div class="line"><a id="l00744" name="l00744"></a><span class="lineno">  744</span>    session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#ab360022130771a166ea0e93a1876ced4">con_active</a>++;</div>
<div class="line"><a id="l00745" name="l00745"></a><span class="lineno">  745</span> </div>
<div class="line"><a id="l00746" name="l00746"></a><span class="lineno">  746</span>  bytes_written = <a class="code hl_function" href="net_8c.html#aaf20c9b0b2ad3168c15e535a67ea3ce5">coap_session_send_pdu</a>(session, pdu);</div>
<div class="line"><a id="l00747" name="l00747"></a><span class="lineno">  747</span> </div>
<div class="line"><a id="l00748" name="l00748"></a><span class="lineno">  748</span><span class="preprocessor">#endif </span><span class="comment">/* WITH_LWIP */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00749" name="l00749"></a><span class="lineno">  749</span> </div>
<div class="line"><a id="l00750" name="l00750"></a><span class="lineno">  750</span>  <span class="keywordflow">return</span> bytes_written;</div>
<div class="line"><a id="l00751" name="l00751"></a><span class="lineno">  751</span>}</div>
</div>
<div class="line"><a id="l00752" name="l00752"></a><span class="lineno">  752</span> </div>
<div class="line"><a id="l00753" name="l00753"></a><span class="lineno">  753</span><a class="code hl_typedef" href="pdu_8h.html#ac60fb9284ace878df3db4a2d621d9a8d">coap_tid_t</a></div>
<div class="foldopen" id="foldopen00754" data-start="{" data-end="}">
<div class="line"><a id="l00754" name="l00754"></a><span class="lineno"><a class="line" href="net_8c.html#ab31cd76353f751ec4dc5c033152df575">  754</a></span><a class="code hl_function" href="net_8c.html#ab31cd76353f751ec4dc5c033152df575">coap_send_error</a>(<a class="code hl_struct" href="structcoap__session__t.html">coap_session_t</a> *session,</div>
<div class="line"><a id="l00755" name="l00755"></a><span class="lineno">  755</span>  <a class="code hl_struct" href="structcoap__pdu__t.html">coap_pdu_t</a> *request,</div>
<div class="line"><a id="l00756" name="l00756"></a><span class="lineno">  756</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> code,</div>
<div class="line"><a id="l00757" name="l00757"></a><span class="lineno">  757</span>  <a class="code hl_typedef" href="group__opt__filter.html#ga001c5b06ae9e02996509516871cb69a8">coap_opt_filter_t</a> opts) {</div>
<div class="line"><a id="l00758" name="l00758"></a><span class="lineno">  758</span>  <a class="code hl_struct" href="structcoap__pdu__t.html">coap_pdu_t</a> *response;</div>
<div class="line"><a id="l00759" name="l00759"></a><span class="lineno">  759</span>  <a class="code hl_typedef" href="pdu_8h.html#ac60fb9284ace878df3db4a2d621d9a8d">coap_tid_t</a> result = <a class="code hl_define" href="pdu_8h.html#afe70beb6b87ece4aca2d2735c759c625">COAP_INVALID_TID</a>;</div>
<div class="line"><a id="l00760" name="l00760"></a><span class="lineno">  760</span> </div>
<div class="line"><a id="l00761" name="l00761"></a><span class="lineno">  761</span>  <a class="code hl_define" href="mem_8c.html#a3d4ae9c092e117c836f52dc7d7cee574">assert</a>(request);</div>
<div class="line"><a id="l00762" name="l00762"></a><span class="lineno">  762</span>  <a class="code hl_define" href="mem_8c.html#a3d4ae9c092e117c836f52dc7d7cee574">assert</a>(session);</div>
<div class="line"><a id="l00763" name="l00763"></a><span class="lineno">  763</span> </div>
<div class="line"><a id="l00764" name="l00764"></a><span class="lineno">  764</span>  response = <a class="code hl_function" href="net_8c.html#aa54bb684429ee455f119fc5fb1feb197">coap_new_error_response</a>(request, code, opts);</div>
<div class="line"><a id="l00765" name="l00765"></a><span class="lineno">  765</span>  <span class="keywordflow">if</span> (response)</div>
<div class="line"><a id="l00766" name="l00766"></a><span class="lineno">  766</span>    result = <a class="code hl_function" href="net_8c.html#ab0b0b5db03427c4313c01ec2b12cf8ed">coap_send</a>(session, response);</div>
<div class="line"><a id="l00767" name="l00767"></a><span class="lineno">  767</span> </div>
<div class="line"><a id="l00768" name="l00768"></a><span class="lineno">  768</span>  <span class="keywordflow">return</span> result;</div>
<div class="line"><a id="l00769" name="l00769"></a><span class="lineno">  769</span>}</div>
</div>
<div class="line"><a id="l00770" name="l00770"></a><span class="lineno">  770</span> </div>
<div class="line"><a id="l00771" name="l00771"></a><span class="lineno">  771</span><a class="code hl_typedef" href="pdu_8h.html#ac60fb9284ace878df3db4a2d621d9a8d">coap_tid_t</a></div>
<div class="foldopen" id="foldopen00772" data-start="{" data-end="}">
<div class="line"><a id="l00772" name="l00772"></a><span class="lineno"><a class="line" href="net_8c.html#a6aa830b46188549b51773f724eb8e752">  772</a></span><a class="code hl_function" href="net_8c.html#a6aa830b46188549b51773f724eb8e752">coap_send_message_type</a>(<a class="code hl_struct" href="structcoap__session__t.html">coap_session_t</a> *session, <a class="code hl_struct" href="structcoap__pdu__t.html">coap_pdu_t</a> *request, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> type) {</div>
<div class="line"><a id="l00773" name="l00773"></a><span class="lineno">  773</span>  <a class="code hl_struct" href="structcoap__pdu__t.html">coap_pdu_t</a> *response;</div>
<div class="line"><a id="l00774" name="l00774"></a><span class="lineno">  774</span>  <a class="code hl_typedef" href="pdu_8h.html#ac60fb9284ace878df3db4a2d621d9a8d">coap_tid_t</a> result = <a class="code hl_define" href="pdu_8h.html#afe70beb6b87ece4aca2d2735c759c625">COAP_INVALID_TID</a>;</div>
<div class="line"><a id="l00775" name="l00775"></a><span class="lineno">  775</span> </div>
<div class="line"><a id="l00776" name="l00776"></a><span class="lineno">  776</span>  <span class="keywordflow">if</span> (request) {</div>
<div class="line"><a id="l00777" name="l00777"></a><span class="lineno">  777</span>    response = <a class="code hl_function" href="pdu_8c.html#a4f019ad11b0f633524175488aecbd7d1">coap_pdu_init</a>(type, 0, request-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a65877a685b1f3428d3dc872af075ddc1">tid</a>, 0);</div>
<div class="line"><a id="l00778" name="l00778"></a><span class="lineno">  778</span>    <span class="keywordflow">if</span> (response)</div>
<div class="line"><a id="l00779" name="l00779"></a><span class="lineno">  779</span>      result = <a class="code hl_function" href="net_8c.html#ab0b0b5db03427c4313c01ec2b12cf8ed">coap_send</a>(session, response);</div>
<div class="line"><a id="l00780" name="l00780"></a><span class="lineno">  780</span>  }</div>
<div class="line"><a id="l00781" name="l00781"></a><span class="lineno">  781</span>  <span class="keywordflow">return</span> result;</div>
<div class="line"><a id="l00782" name="l00782"></a><span class="lineno">  782</span>}</div>
</div>
<div class="line"><a id="l00783" name="l00783"></a><span class="lineno">  783</span> </div>
<div class="line"><a id="l00797" name="l00797"></a><span class="lineno">  797</span><span class="keywordtype">unsigned</span> <span class="keywordtype">int</span></div>
<div class="foldopen" id="foldopen00798" data-start="{" data-end="}">
<div class="line"><a id="l00798" name="l00798"></a><span class="lineno"><a class="line" href="net_8c.html#a816e87e31e2b90ada89eed085f016d93">  798</a></span><a class="code hl_function" href="net_8c.html#a816e87e31e2b90ada89eed085f016d93">coap_calc_timeout</a>(<a class="code hl_struct" href="structcoap__session__t.html">coap_session_t</a> *session, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> r) {</div>
<div class="line"><a id="l00799" name="l00799"></a><span class="lineno">  799</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> result;</div>
<div class="line"><a id="l00800" name="l00800"></a><span class="lineno">  800</span> </div>
<div class="line"><a id="l00801" name="l00801"></a><span class="lineno">  801</span>  <span class="comment">/* The integer 1.0 as a Qx.FRAC_BITS */</span></div>
<div class="line"><a id="l00802" name="l00802"></a><span class="lineno">  802</span><span class="preprocessor">#define FP1 Q(FRAC_BITS, ((coap_fixed_point_t){1,0}))</span></div>
<div class="line"><a id="l00803" name="l00803"></a><span class="lineno">  803</span> </div>
<div class="line"><a id="l00804" name="l00804"></a><span class="lineno">  804</span>  <span class="comment">/* rounds val up and right shifts by frac positions */</span></div>
<div class="line"><a id="l00805" name="l00805"></a><span class="lineno">  805</span><span class="preprocessor">#define SHR_FP(val,frac) (((val) + (1 &lt;&lt; ((frac) - 1))) &gt;&gt; (frac))</span></div>
<div class="line"><a id="l00806" name="l00806"></a><span class="lineno">  806</span> </div>
<div class="line"><a id="l00807" name="l00807"></a><span class="lineno">  807</span>  <span class="comment">/* Inner term: multiply ACK_RANDOM_FACTOR by Q0.MAX_BITS[r] and</span></div>
<div class="line"><a id="l00808" name="l00808"></a><span class="lineno">  808</span><span class="comment">   * make the result a rounded Qx.FRAC_BITS */</span></div>
<div class="line"><a id="l00809" name="l00809"></a><span class="lineno">  809</span>  result = <a class="code hl_define" href="net_8c.html#ab7637b4488a03cae08c1115a21c16140">SHR_FP</a>((<a class="code hl_define" href="net_8c.html#aef339b3c4338bdb86736d679dc944b9e">ACK_RANDOM_FACTOR</a> - <a class="code hl_define" href="net_8c.html#add95b1f9de12dcad0e43d46c50e2feb0">FP1</a>) * r, <a class="code hl_define" href="net_8c.html#a51c241e7ad52441b8d4c1fd5f498b3b9">MAX_BITS</a>);</div>
<div class="line"><a id="l00810" name="l00810"></a><span class="lineno">  810</span> </div>
<div class="line"><a id="l00811" name="l00811"></a><span class="lineno">  811</span>  <span class="comment">/* Add 1 to the inner term and multiply with ACK_TIMEOUT, then</span></div>
<div class="line"><a id="l00812" name="l00812"></a><span class="lineno">  812</span><span class="comment">   * make the result a rounded Qx.FRAC_BITS */</span></div>
<div class="line"><a id="l00813" name="l00813"></a><span class="lineno">  813</span>  result = <a class="code hl_define" href="net_8c.html#ab7637b4488a03cae08c1115a21c16140">SHR_FP</a>(((result + <a class="code hl_define" href="net_8c.html#add95b1f9de12dcad0e43d46c50e2feb0">FP1</a>) * <a class="code hl_define" href="net_8c.html#a5e53751a27267574b92f23d01951a259">ACK_TIMEOUT</a>), <a class="code hl_define" href="net_8c.html#a0ac65b37442b7b10d74dedeb7d25e737">FRAC_BITS</a>);</div>
<div class="line"><a id="l00814" name="l00814"></a><span class="lineno">  814</span> </div>
<div class="line"><a id="l00815" name="l00815"></a><span class="lineno">  815</span>  <span class="comment">/* Multiply with COAP_TICKS_PER_SECOND to yield system ticks</span></div>
<div class="line"><a id="l00816" name="l00816"></a><span class="lineno">  816</span><span class="comment">   * (yields a Qx.FRAC_BITS) and shift to get an integer */</span></div>
<div class="line"><a id="l00817" name="l00817"></a><span class="lineno">  817</span>  <span class="keywordflow">return</span> <a class="code hl_define" href="net_8c.html#ab7637b4488a03cae08c1115a21c16140">SHR_FP</a>((<a class="code hl_define" href="group__clock.html#gabf672e8aaf725f9ccbc4fc0aa202a5bb">COAP_TICKS_PER_SECOND</a> * result), <a class="code hl_define" href="net_8c.html#a0ac65b37442b7b10d74dedeb7d25e737">FRAC_BITS</a>);</div>
<div class="line"><a id="l00818" name="l00818"></a><span class="lineno">  818</span> </div>
<div class="line"><a id="l00819" name="l00819"></a><span class="lineno">  819</span><span class="preprocessor">#undef FP1</span></div>
<div class="line"><a id="l00820" name="l00820"></a><span class="lineno">  820</span><span class="preprocessor">#undef SHR_FP</span></div>
<div class="line"><a id="l00821" name="l00821"></a><span class="lineno">  821</span>}</div>
</div>
<div class="line"><a id="l00822" name="l00822"></a><span class="lineno">  822</span> </div>
<div class="line"><a id="l00823" name="l00823"></a><span class="lineno">  823</span><a class="code hl_typedef" href="pdu_8h.html#ac60fb9284ace878df3db4a2d621d9a8d">coap_tid_t</a></div>
<div class="foldopen" id="foldopen00824" data-start="{" data-end="}">
<div class="line"><a id="l00824" name="l00824"></a><span class="lineno"><a class="line" href="net_8c.html#a7bee391c13b539a24d9f74b2fc23e08a">  824</a></span><a class="code hl_function" href="net_8c.html#a7bee391c13b539a24d9f74b2fc23e08a">coap_wait_ack</a>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *context, <a class="code hl_struct" href="structcoap__session__t.html">coap_session_t</a> *session,</div>
<div class="line"><a id="l00825" name="l00825"></a><span class="lineno">  825</span>              <a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> *node) {</div>
<div class="line"><a id="l00826" name="l00826"></a><span class="lineno">  826</span>  <a class="code hl_typedef" href="group__clock.html#ga97ff1502e211b4ee6c3f15a598833438">coap_tick_t</a> now;</div>
<div class="line"><a id="l00827" name="l00827"></a><span class="lineno">  827</span> </div>
<div class="line"><a id="l00828" name="l00828"></a><span class="lineno">  828</span>  node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a20ff974763849b7aeaca2cbf6f4b8f70">session</a> = <a class="code hl_function" href="coap__session_8c.html#ae37bac62f8de2cecd968ec1c26eb23b4">coap_session_reference</a>(session);</div>
<div class="line"><a id="l00829" name="l00829"></a><span class="lineno">  829</span> </div>
<div class="line"><a id="l00830" name="l00830"></a><span class="lineno">  830</span>  <span class="comment">/* Set timer for pdu retransmission. If this is the first element in</span></div>
<div class="line"><a id="l00831" name="l00831"></a><span class="lineno">  831</span><span class="comment">  * the retransmission queue, the base time is set to the current</span></div>
<div class="line"><a id="l00832" name="l00832"></a><span class="lineno">  832</span><span class="comment">  * time and the retransmission time is node-&gt;timeout. If there is</span></div>
<div class="line"><a id="l00833" name="l00833"></a><span class="lineno">  833</span><span class="comment">  * already an entry in the sendqueue, we must check if this node is</span></div>
<div class="line"><a id="l00834" name="l00834"></a><span class="lineno">  834</span><span class="comment">  * to be retransmitted earlier. Therefore, node-&gt;timeout is first</span></div>
<div class="line"><a id="l00835" name="l00835"></a><span class="lineno">  835</span><span class="comment">  * normalized to the base time and then inserted into the queue with</span></div>
<div class="line"><a id="l00836" name="l00836"></a><span class="lineno">  836</span><span class="comment">  * an adjusted relative time.</span></div>
<div class="line"><a id="l00837" name="l00837"></a><span class="lineno">  837</span><span class="comment">  */</span></div>
<div class="line"><a id="l00838" name="l00838"></a><span class="lineno">  838</span>  <a class="code hl_function" href="group__clock.html#ga350826988e63ff446a2a84034ecdf43d">coap_ticks</a>(&amp;now);</div>
<div class="line"><a id="l00839" name="l00839"></a><span class="lineno">  839</span>  <span class="keywordflow">if</span> (context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a> == NULL) {</div>
<div class="line"><a id="l00840" name="l00840"></a><span class="lineno">  840</span>    node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#ab5edd7b3b3ddd98d8356febbd4726e7c">t</a> = node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a4d8b47a02fea39b9a9fc0501f81cbaa2">timeout</a>;</div>
<div class="line"><a id="l00841" name="l00841"></a><span class="lineno">  841</span>    context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a080dc026c9eec48849d0140b433e04bb">sendqueue_basetime</a> = now;</div>
<div class="line"><a id="l00842" name="l00842"></a><span class="lineno">  842</span>  } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00843" name="l00843"></a><span class="lineno">  843</span>    <span class="comment">/* make node-&gt;t relative to context-&gt;sendqueue_basetime */</span></div>
<div class="line"><a id="l00844" name="l00844"></a><span class="lineno">  844</span>    node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#ab5edd7b3b3ddd98d8356febbd4726e7c">t</a> = (now - context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a080dc026c9eec48849d0140b433e04bb">sendqueue_basetime</a>) + node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a4d8b47a02fea39b9a9fc0501f81cbaa2">timeout</a>;</div>
<div class="line"><a id="l00845" name="l00845"></a><span class="lineno">  845</span>  }</div>
<div class="line"><a id="l00846" name="l00846"></a><span class="lineno">  846</span> </div>
<div class="line"><a id="l00847" name="l00847"></a><span class="lineno">  847</span>  <a class="code hl_function" href="net_8c.html#a80d2c3b0141e98bf3f7914e7e59b9530">coap_insert_node</a>(&amp;context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a>, node);</div>
<div class="line"><a id="l00848" name="l00848"></a><span class="lineno">  848</span> </div>
<div class="line"><a id="l00849" name="l00849"></a><span class="lineno">  849</span><span class="preprocessor">#ifdef WITH_LWIP</span></div>
<div class="line"><a id="l00850" name="l00850"></a><span class="lineno">  850</span>  <span class="keywordflow">if</span> (node == context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a>) <span class="comment">/* don&#39;t bother with timer stuff if there are earlier retransmits */</span></div>
<div class="line"><a id="l00851" name="l00851"></a><span class="lineno">  851</span>    coap_retransmittimer_restart(context);</div>
<div class="line"><a id="l00852" name="l00852"></a><span class="lineno">  852</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00853" name="l00853"></a><span class="lineno">  853</span> </div>
<div class="line"><a id="l00854" name="l00854"></a><span class="lineno">  854</span><span class="preprocessor">#ifdef WITH_CONTIKI</span></div>
<div class="line"><a id="l00855" name="l00855"></a><span class="lineno">  855</span>  {                            <span class="comment">/* (re-)initialize retransmission timer */</span></div>
<div class="line"><a id="l00856" name="l00856"></a><span class="lineno">  856</span>    <a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> *nextpdu;</div>
<div class="line"><a id="l00857" name="l00857"></a><span class="lineno">  857</span> </div>
<div class="line"><a id="l00858" name="l00858"></a><span class="lineno">  858</span>    nextpdu = <a class="code hl_function" href="net_8c.html#a4a9f7d31eafd7d82776f9b1a9291eea0">coap_peek_next</a>(context);</div>
<div class="line"><a id="l00859" name="l00859"></a><span class="lineno">  859</span>    <a class="code hl_define" href="mem_8c.html#a3d4ae9c092e117c836f52dc7d7cee574">assert</a>(nextpdu);                <span class="comment">/* we have just inserted a node */</span></div>
<div class="line"><a id="l00860" name="l00860"></a><span class="lineno">  860</span> </div>
<div class="line"><a id="l00861" name="l00861"></a><span class="lineno">  861</span>                                <span class="comment">/* must set timer within the context of the retransmit process */</span></div>
<div class="line"><a id="l00862" name="l00862"></a><span class="lineno">  862</span>    PROCESS_CONTEXT_BEGIN(&amp;coap_retransmit_process);</div>
<div class="line"><a id="l00863" name="l00863"></a><span class="lineno">  863</span>    etimer_set(&amp;context-&gt;retransmit_timer, nextpdu-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#ab5edd7b3b3ddd98d8356febbd4726e7c">t</a>);</div>
<div class="line"><a id="l00864" name="l00864"></a><span class="lineno">  864</span>    PROCESS_CONTEXT_END(&amp;coap_retransmit_process);</div>
<div class="line"><a id="l00865" name="l00865"></a><span class="lineno">  865</span>  }</div>
<div class="line"><a id="l00866" name="l00866"></a><span class="lineno">  866</span><span class="preprocessor">#endif </span><span class="comment">/* WITH_CONTIKI */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00867" name="l00867"></a><span class="lineno">  867</span> </div>
<div class="line"><a id="l00868" name="l00868"></a><span class="lineno">  868</span>  <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, <span class="stringliteral">&quot;** %s: tid=%d added to retransmit queue (%ums)\n&quot;</span>,</div>
<div class="line"><a id="l00869" name="l00869"></a><span class="lineno">  869</span>    <a class="code hl_function" href="group__logging.html#gabf09c67f27059ca278900e7e8fdd475e">coap_session_str</a>(node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a20ff974763849b7aeaca2cbf6f4b8f70">session</a>), node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#aeded9dd536f54ee47418575711e7dbac">id</a>,</div>
<div class="line"><a id="l00870" name="l00870"></a><span class="lineno">  870</span>    (<span class="keywordtype">unsigned</span>)(node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#ab5edd7b3b3ddd98d8356febbd4726e7c">t</a> * 1000 / <a class="code hl_define" href="group__clock.html#gabf672e8aaf725f9ccbc4fc0aa202a5bb">COAP_TICKS_PER_SECOND</a>));</div>
<div class="line"><a id="l00871" name="l00871"></a><span class="lineno">  871</span> </div>
<div class="line"><a id="l00872" name="l00872"></a><span class="lineno">  872</span>  <span class="keywordflow">return</span> node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#aeded9dd536f54ee47418575711e7dbac">id</a>;</div>
<div class="line"><a id="l00873" name="l00873"></a><span class="lineno">  873</span>}</div>
</div>
<div class="line"><a id="l00874" name="l00874"></a><span class="lineno">  874</span> </div>
<div class="line"><a id="l00875" name="l00875"></a><span class="lineno">  875</span><a class="code hl_typedef" href="pdu_8h.html#ac60fb9284ace878df3db4a2d621d9a8d">coap_tid_t</a></div>
<div class="foldopen" id="foldopen00876" data-start="{" data-end="}">
<div class="line"><a id="l00876" name="l00876"></a><span class="lineno"><a class="line" href="net_8c.html#ab0b0b5db03427c4313c01ec2b12cf8ed">  876</a></span><a class="code hl_function" href="net_8c.html#ab0b0b5db03427c4313c01ec2b12cf8ed">coap_send</a>(<a class="code hl_struct" href="structcoap__session__t.html">coap_session_t</a> *session, <a class="code hl_struct" href="structcoap__pdu__t.html">coap_pdu_t</a> *pdu) {</div>
<div class="line"><a id="l00877" name="l00877"></a><span class="lineno">  877</span>  <a class="code hl_typedef" href="uthash_8h.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a> r;</div>
<div class="line"><a id="l00878" name="l00878"></a><span class="lineno">  878</span>  ssize_t bytes_written;</div>
<div class="line"><a id="l00879" name="l00879"></a><span class="lineno">  879</span> </div>
<div class="line"><a id="l00880" name="l00880"></a><span class="lineno">  880</span>  <span class="keywordflow">if</span> (!<a class="code hl_function" href="pdu_8c.html#ab5e81fe5717f977c62b7ef427d946c35">coap_pdu_encode_header</a>(pdu, session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a62089dd9c72836d322ae0ce0d0e7114f">proto</a>)) {</div>
<div class="line"><a id="l00881" name="l00881"></a><span class="lineno">  881</span>    <span class="keywordflow">goto</span> error;</div>
<div class="line"><a id="l00882" name="l00882"></a><span class="lineno">  882</span>  }</div>
<div class="line"><a id="l00883" name="l00883"></a><span class="lineno">  883</span> </div>
<div class="line"><a id="l00884" name="l00884"></a><span class="lineno">  884</span>  bytes_written = <a class="code hl_function" href="net_8c.html#a0c600aed61c8a8402d31ef795df3b0b6">coap_send_pdu</a>( session, pdu, NULL );</div>
<div class="line"><a id="l00885" name="l00885"></a><span class="lineno">  885</span> </div>
<div class="line"><a id="l00886" name="l00886"></a><span class="lineno">  886</span>  <span class="keywordflow">if</span> (bytes_written == <a class="code hl_define" href="pdu_8h.html#a5d4d36bdff1d1b8fe2edf092462eb2c7">COAP_PDU_DELAYED</a>) {</div>
<div class="line"><a id="l00887" name="l00887"></a><span class="lineno">  887</span>    <span class="comment">/* do not free pdu as it is stored with session for later use */</span></div>
<div class="line"><a id="l00888" name="l00888"></a><span class="lineno">  888</span>    <span class="keywordflow">return</span> pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a65877a685b1f3428d3dc872af075ddc1">tid</a>;</div>
<div class="line"><a id="l00889" name="l00889"></a><span class="lineno">  889</span>  }</div>
<div class="line"><a id="l00890" name="l00890"></a><span class="lineno">  890</span> </div>
<div class="line"><a id="l00891" name="l00891"></a><span class="lineno">  891</span>  <span class="keywordflow">if</span> (bytes_written &lt; 0) {</div>
<div class="line"><a id="l00892" name="l00892"></a><span class="lineno">  892</span>    <a class="code hl_function" href="pdu_8c.html#a48581f968a30ef4278702eb1c16b7a90">coap_delete_pdu</a>(pdu);</div>
<div class="line"><a id="l00893" name="l00893"></a><span class="lineno">  893</span>    <span class="keywordflow">return</span> (<a class="code hl_typedef" href="pdu_8h.html#ac60fb9284ace878df3db4a2d621d9a8d">coap_tid_t</a>)bytes_written;</div>
<div class="line"><a id="l00894" name="l00894"></a><span class="lineno">  894</span>  }</div>
<div class="line"><a id="l00895" name="l00895"></a><span class="lineno">  895</span> </div>
<div class="line"><a id="l00896" name="l00896"></a><span class="lineno">  896</span>  <span class="keywordflow">if</span> (<a class="code hl_define" href="coap__session_8h.html#a7de76e6002dd8d1ca53f3302e4e33d21">COAP_PROTO_RELIABLE</a>(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a62089dd9c72836d322ae0ce0d0e7114f">proto</a>) &amp;&amp;</div>
<div class="line"><a id="l00897" name="l00897"></a><span class="lineno">  897</span>    (<span class="keywordtype">size_t</span>)bytes_written &lt; pdu-&gt;used_size + pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a8e9b3dc1dc376c0d98a5e6940953cdc2">hdr_size</a>) {</div>
<div class="line"><a id="l00898" name="l00898"></a><span class="lineno">  898</span>    <span class="keywordflow">if</span> (<a class="code hl_function" href="coap__session_8c.html#a192c2ce0f620200797ee34ac6f5d04c7">coap_session_delay_pdu</a>(session, pdu, NULL) == <a class="code hl_define" href="pdu_8h.html#a5d4d36bdff1d1b8fe2edf092462eb2c7">COAP_PDU_DELAYED</a>) {</div>
<div class="line"><a id="l00899" name="l00899"></a><span class="lineno">  899</span>      session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#af59543a005a01767382c6739cd710ee4">partial_write</a> = (size_t)bytes_written;</div>
<div class="line"><a id="l00900" name="l00900"></a><span class="lineno">  900</span>      <span class="comment">/* do not free pdu as it is stored with session for later use */</span></div>
<div class="line"><a id="l00901" name="l00901"></a><span class="lineno">  901</span>      <span class="keywordflow">return</span> pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a65877a685b1f3428d3dc872af075ddc1">tid</a>;</div>
<div class="line"><a id="l00902" name="l00902"></a><span class="lineno">  902</span>    } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00903" name="l00903"></a><span class="lineno">  903</span>      <span class="keywordflow">goto</span> error;</div>
<div class="line"><a id="l00904" name="l00904"></a><span class="lineno">  904</span>    }</div>
<div class="line"><a id="l00905" name="l00905"></a><span class="lineno">  905</span>  }</div>
<div class="line"><a id="l00906" name="l00906"></a><span class="lineno">  906</span> </div>
<div class="line"><a id="l00907" name="l00907"></a><span class="lineno">  907</span>  <span class="keywordflow">if</span> (pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a0d5796b82924c69852860053020d0684">type</a> != <a class="code hl_define" href="pdu_8h.html#ab6ad49de4b14e7cf5bd0a2a1a87eef2f">COAP_MESSAGE_CON</a> || <a class="code hl_define" href="coap__session_8h.html#a7de76e6002dd8d1ca53f3302e4e33d21">COAP_PROTO_RELIABLE</a>(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a62089dd9c72836d322ae0ce0d0e7114f">proto</a>)) {</div>
<div class="line"><a id="l00908" name="l00908"></a><span class="lineno">  908</span>    <a class="code hl_typedef" href="pdu_8h.html#ac60fb9284ace878df3db4a2d621d9a8d">coap_tid_t</a> <span class="keywordtype">id</span> = pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a65877a685b1f3428d3dc872af075ddc1">tid</a>;</div>
<div class="line"><a id="l00909" name="l00909"></a><span class="lineno">  909</span>    <a class="code hl_function" href="pdu_8c.html#a48581f968a30ef4278702eb1c16b7a90">coap_delete_pdu</a>(pdu);</div>
<div class="line"><a id="l00910" name="l00910"></a><span class="lineno">  910</span>    <span class="keywordflow">return</span> id;</div>
<div class="line"><a id="l00911" name="l00911"></a><span class="lineno">  911</span>  }</div>
<div class="line"><a id="l00912" name="l00912"></a><span class="lineno">  912</span> </div>
<div class="line"><a id="l00913" name="l00913"></a><span class="lineno">  913</span>  <a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> *node = <a class="code hl_function" href="net_8c.html#adbf4c617bdb13f0b61f83dca2ecdcc9e">coap_new_node</a>();</div>
<div class="line"><a id="l00914" name="l00914"></a><span class="lineno">  914</span>  <span class="keywordflow">if</span> (!node) {</div>
<div class="line"><a id="l00915" name="l00915"></a><span class="lineno">  915</span>    <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, <span class="stringliteral">&quot;coap_wait_ack: insufficient memory\n&quot;</span>);</div>
<div class="line"><a id="l00916" name="l00916"></a><span class="lineno">  916</span>    <span class="keywordflow">goto</span> error;</div>
<div class="line"><a id="l00917" name="l00917"></a><span class="lineno">  917</span>  }</div>
<div class="line"><a id="l00918" name="l00918"></a><span class="lineno">  918</span> </div>
<div class="line"><a id="l00919" name="l00919"></a><span class="lineno">  919</span>  node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#aeded9dd536f54ee47418575711e7dbac">id</a> = pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a65877a685b1f3428d3dc872af075ddc1">tid</a>;</div>
<div class="line"><a id="l00920" name="l00920"></a><span class="lineno">  920</span>  node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a> = pdu;</div>
<div class="line"><a id="l00921" name="l00921"></a><span class="lineno">  921</span>  <a class="code hl_define" href="group__prng.html#ga7c7d6401e43c811dacb517d51184c873">prng</a>(&amp;r, <span class="keyword">sizeof</span>(r));</div>
<div class="line"><a id="l00922" name="l00922"></a><span class="lineno">  922</span>  <span class="comment">/* add timeout in range [ACK_TIMEOUT...ACK_TIMEOUT * ACK_RANDOM_FACTOR] */</span></div>
<div class="line"><a id="l00923" name="l00923"></a><span class="lineno">  923</span>  node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a4d8b47a02fea39b9a9fc0501f81cbaa2">timeout</a> = <a class="code hl_function" href="net_8c.html#a816e87e31e2b90ada89eed085f016d93">coap_calc_timeout</a>(session, r);</div>
<div class="line"><a id="l00924" name="l00924"></a><span class="lineno">  924</span>  <span class="keywordflow">return</span> <a class="code hl_function" href="net_8c.html#a7bee391c13b539a24d9f74b2fc23e08a">coap_wait_ack</a>(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a8f8e37457b167cc8b95fadd7eeffd8d7">context</a>, session, node);</div>
<div class="line"><a id="l00925" name="l00925"></a><span class="lineno">  925</span> error:</div>
<div class="line"><a id="l00926" name="l00926"></a><span class="lineno">  926</span>  <a class="code hl_function" href="pdu_8c.html#a48581f968a30ef4278702eb1c16b7a90">coap_delete_pdu</a>(pdu);</div>
<div class="line"><a id="l00927" name="l00927"></a><span class="lineno">  927</span>  <span class="keywordflow">return</span> <a class="code hl_define" href="pdu_8h.html#afe70beb6b87ece4aca2d2735c759c625">COAP_INVALID_TID</a>;</div>
<div class="line"><a id="l00928" name="l00928"></a><span class="lineno">  928</span>}</div>
</div>
<div class="line"><a id="l00929" name="l00929"></a><span class="lineno">  929</span> </div>
<div class="line"><a id="l00930" name="l00930"></a><span class="lineno">  930</span><a class="code hl_typedef" href="pdu_8h.html#ac60fb9284ace878df3db4a2d621d9a8d">coap_tid_t</a></div>
<div class="foldopen" id="foldopen00931" data-start="{" data-end="}">
<div class="line"><a id="l00931" name="l00931"></a><span class="lineno"><a class="line" href="net_8c.html#a9900c032b74bd57f67d489484a2b3207">  931</a></span><a class="code hl_function" href="net_8c.html#a9900c032b74bd57f67d489484a2b3207">coap_retransmit</a>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *context, <a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> *node) {</div>
<div class="line"><a id="l00932" name="l00932"></a><span class="lineno">  932</span>  <span class="keywordflow">if</span> (!context || !node)</div>
<div class="line"><a id="l00933" name="l00933"></a><span class="lineno">  933</span>    <span class="keywordflow">return</span> <a class="code hl_define" href="pdu_8h.html#afe70beb6b87ece4aca2d2735c759c625">COAP_INVALID_TID</a>;</div>
<div class="line"><a id="l00934" name="l00934"></a><span class="lineno">  934</span> </div>
<div class="line"><a id="l00935" name="l00935"></a><span class="lineno">  935</span>  <span class="comment">/* re-initialize timeout when maximum number of retransmissions are not reached yet */</span></div>
<div class="line"><a id="l00936" name="l00936"></a><span class="lineno">  936</span>  <span class="keywordflow">if</span> (node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#aff24f5a43b3d2182535bc7bd2b5f5341">retransmit_cnt</a> &lt; node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a20ff974763849b7aeaca2cbf6f4b8f70">session</a>-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a2b1cf84dfbbb313dd07afe2eba0f498b">max_retransmit</a>) {</div>
<div class="line"><a id="l00937" name="l00937"></a><span class="lineno">  937</span>    ssize_t bytes_written;</div>
<div class="line"><a id="l00938" name="l00938"></a><span class="lineno">  938</span>    <a class="code hl_typedef" href="group__clock.html#ga97ff1502e211b4ee6c3f15a598833438">coap_tick_t</a> now;</div>
<div class="line"><a id="l00939" name="l00939"></a><span class="lineno">  939</span> </div>
<div class="line"><a id="l00940" name="l00940"></a><span class="lineno">  940</span>    node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#aff24f5a43b3d2182535bc7bd2b5f5341">retransmit_cnt</a>++;</div>
<div class="line"><a id="l00941" name="l00941"></a><span class="lineno">  941</span>    <a class="code hl_function" href="group__clock.html#ga350826988e63ff446a2a84034ecdf43d">coap_ticks</a>(&amp;now);</div>
<div class="line"><a id="l00942" name="l00942"></a><span class="lineno">  942</span>    <span class="keywordflow">if</span> (context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a> == NULL) {</div>
<div class="line"><a id="l00943" name="l00943"></a><span class="lineno">  943</span>      node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#ab5edd7b3b3ddd98d8356febbd4726e7c">t</a> = node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a4d8b47a02fea39b9a9fc0501f81cbaa2">timeout</a> &lt;&lt; node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#aff24f5a43b3d2182535bc7bd2b5f5341">retransmit_cnt</a>;</div>
<div class="line"><a id="l00944" name="l00944"></a><span class="lineno">  944</span>      context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a080dc026c9eec48849d0140b433e04bb">sendqueue_basetime</a> = now;</div>
<div class="line"><a id="l00945" name="l00945"></a><span class="lineno">  945</span>    } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l00946" name="l00946"></a><span class="lineno">  946</span>      <span class="comment">/* make node-&gt;t relative to context-&gt;sendqueue_basetime */</span></div>
<div class="line"><a id="l00947" name="l00947"></a><span class="lineno">  947</span>      node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#ab5edd7b3b3ddd98d8356febbd4726e7c">t</a> = (now - context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a080dc026c9eec48849d0140b433e04bb">sendqueue_basetime</a>) + (node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a4d8b47a02fea39b9a9fc0501f81cbaa2">timeout</a> &lt;&lt; node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#aff24f5a43b3d2182535bc7bd2b5f5341">retransmit_cnt</a>);</div>
<div class="line"><a id="l00948" name="l00948"></a><span class="lineno">  948</span>    }</div>
<div class="line"><a id="l00949" name="l00949"></a><span class="lineno">  949</span>    <a class="code hl_function" href="net_8c.html#a80d2c3b0141e98bf3f7914e7e59b9530">coap_insert_node</a>(&amp;context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a>, node);</div>
<div class="line"><a id="l00950" name="l00950"></a><span class="lineno">  950</span><span class="preprocessor">#ifdef WITH_LWIP</span></div>
<div class="line"><a id="l00951" name="l00951"></a><span class="lineno">  951</span>    <span class="keywordflow">if</span> (node == context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a>) <span class="comment">/* don&#39;t bother with timer stuff if there are earlier retransmits */</span></div>
<div class="line"><a id="l00952" name="l00952"></a><span class="lineno">  952</span>      coap_retransmittimer_restart(context);</div>
<div class="line"><a id="l00953" name="l00953"></a><span class="lineno">  953</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00954" name="l00954"></a><span class="lineno">  954</span> </div>
<div class="line"><a id="l00955" name="l00955"></a><span class="lineno">  955</span>    <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, <span class="stringliteral">&quot;** %s: tid=%d: retransmission #%d\n&quot;</span>,</div>
<div class="line"><a id="l00956" name="l00956"></a><span class="lineno">  956</span>             <a class="code hl_function" href="group__logging.html#gabf09c67f27059ca278900e7e8fdd475e">coap_session_str</a>(node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a20ff974763849b7aeaca2cbf6f4b8f70">session</a>), node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#aeded9dd536f54ee47418575711e7dbac">id</a>, node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#aff24f5a43b3d2182535bc7bd2b5f5341">retransmit_cnt</a>);</div>
<div class="line"><a id="l00957" name="l00957"></a><span class="lineno">  957</span> </div>
<div class="line"><a id="l00958" name="l00958"></a><span class="lineno">  958</span>    <span class="keywordflow">if</span> (node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a20ff974763849b7aeaca2cbf6f4b8f70">session</a>-&gt;<a class="code hl_variable" href="structcoap__session__t.html#ab360022130771a166ea0e93a1876ced4">con_active</a>)</div>
<div class="line"><a id="l00959" name="l00959"></a><span class="lineno">  959</span>      node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a20ff974763849b7aeaca2cbf6f4b8f70">session</a>-&gt;<a class="code hl_variable" href="structcoap__session__t.html#ab360022130771a166ea0e93a1876ced4">con_active</a>--;</div>
<div class="line"><a id="l00960" name="l00960"></a><span class="lineno">  960</span>    bytes_written = <a class="code hl_function" href="net_8c.html#a0c600aed61c8a8402d31ef795df3b0b6">coap_send_pdu</a>(node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a20ff974763849b7aeaca2cbf6f4b8f70">session</a>, node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a>, node);</div>
<div class="line"><a id="l00961" name="l00961"></a><span class="lineno">  961</span> </div>
<div class="line"><a id="l00962" name="l00962"></a><span class="lineno">  962</span>    <span class="keywordflow">if</span> (bytes_written == <a class="code hl_define" href="pdu_8h.html#a5d4d36bdff1d1b8fe2edf092462eb2c7">COAP_PDU_DELAYED</a>) {</div>
<div class="line"><a id="l00963" name="l00963"></a><span class="lineno">  963</span>      <span class="comment">/* PDU was not retransmitted immediately because a new handshake is</span></div>
<div class="line"><a id="l00964" name="l00964"></a><span class="lineno">  964</span><span class="comment">         in progress. node was moved to the send queue of the session. */</span></div>
<div class="line"><a id="l00965" name="l00965"></a><span class="lineno">  965</span>      <span class="keywordflow">return</span> node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#aeded9dd536f54ee47418575711e7dbac">id</a>;</div>
<div class="line"><a id="l00966" name="l00966"></a><span class="lineno">  966</span>    }</div>
<div class="line"><a id="l00967" name="l00967"></a><span class="lineno">  967</span> </div>
<div class="line"><a id="l00968" name="l00968"></a><span class="lineno">  968</span>    <span class="keywordflow">if</span> (bytes_written &lt; 0)</div>
<div class="line"><a id="l00969" name="l00969"></a><span class="lineno">  969</span>      <span class="keywordflow">return</span> (<span class="keywordtype">int</span>)bytes_written;</div>
<div class="line"><a id="l00970" name="l00970"></a><span class="lineno">  970</span> </div>
<div class="line"><a id="l00971" name="l00971"></a><span class="lineno">  971</span>    <span class="keywordflow">return</span> node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#aeded9dd536f54ee47418575711e7dbac">id</a>;</div>
<div class="line"><a id="l00972" name="l00972"></a><span class="lineno">  972</span>  }</div>
<div class="line"><a id="l00973" name="l00973"></a><span class="lineno">  973</span> </div>
<div class="line"><a id="l00974" name="l00974"></a><span class="lineno">  974</span>  <span class="comment">/* no more retransmissions, remove node from system */</span></div>
<div class="line"><a id="l00975" name="l00975"></a><span class="lineno">  975</span> </div>
<div class="line"><a id="l00976" name="l00976"></a><span class="lineno">  976</span><span class="preprocessor">#ifndef WITH_CONTIKI</span></div>
<div class="line"><a id="l00977" name="l00977"></a><span class="lineno">  977</span>  <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, <span class="stringliteral">&quot;** %s: tid=%d: give up after %d attempts\n&quot;</span>,</div>
<div class="line"><a id="l00978" name="l00978"></a><span class="lineno">  978</span>           <a class="code hl_function" href="group__logging.html#gabf09c67f27059ca278900e7e8fdd475e">coap_session_str</a>(node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a20ff974763849b7aeaca2cbf6f4b8f70">session</a>), node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#aeded9dd536f54ee47418575711e7dbac">id</a>, node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#aff24f5a43b3d2182535bc7bd2b5f5341">retransmit_cnt</a>);</div>
<div class="line"><a id="l00979" name="l00979"></a><span class="lineno">  979</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00980" name="l00980"></a><span class="lineno">  980</span> </div>
<div class="line"><a id="l00981" name="l00981"></a><span class="lineno">  981</span><span class="preprocessor">#ifndef WITHOUT_OBSERVE</span></div>
<div class="line"><a id="l00982" name="l00982"></a><span class="lineno">  982</span>  <span class="comment">/* Check if subscriptions exist that should be canceled after</span></div>
<div class="line"><a id="l00983" name="l00983"></a><span class="lineno">  983</span><span class="comment">     COAP_MAX_NOTIFY_FAILURES */</span></div>
<div class="line"><a id="l00984" name="l00984"></a><span class="lineno">  984</span>  <span class="keywordflow">if</span> (node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a69c774f85355eeacc4742355527a8097">code</a> &gt;= 64) {</div>
<div class="line"><a id="l00985" name="l00985"></a><span class="lineno">  985</span>    <a class="code hl_struct" href="structcoap__binary__t.html">coap_binary_t</a> token = { 0, NULL };</div>
<div class="line"><a id="l00986" name="l00986"></a><span class="lineno">  986</span> </div>
<div class="line"><a id="l00987" name="l00987"></a><span class="lineno">  987</span>    token.<a class="code hl_variable" href="structcoap__binary__t.html#a259ade386451359049875d1d90447963">length</a> = node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a8c05f6d455ff81d7751ddb61233a455b">token_length</a>;</div>
<div class="line"><a id="l00988" name="l00988"></a><span class="lineno">  988</span>    token.<a class="code hl_variable" href="structcoap__binary__t.html#a728a24b7e7a462954cdd7a1790c35a8e">s</a> = node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a3c42c790abb815d722fbebcd7702a200">token</a>;</div>
<div class="line"><a id="l00989" name="l00989"></a><span class="lineno">  989</span> </div>
<div class="line"><a id="l00990" name="l00990"></a><span class="lineno">  990</span>    <a class="code hl_function" href="resource_8c.html#a6fe7101754779c34807bf00b87ee5f0b">coap_handle_failed_notify</a>(context, node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a20ff974763849b7aeaca2cbf6f4b8f70">session</a>, &amp;token);</div>
<div class="line"><a id="l00991" name="l00991"></a><span class="lineno">  991</span>  }</div>
<div class="line"><a id="l00992" name="l00992"></a><span class="lineno">  992</span><span class="preprocessor">#endif </span><span class="comment">/* WITHOUT_OBSERVE */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l00993" name="l00993"></a><span class="lineno">  993</span>  <span class="keywordflow">if</span> (node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a20ff974763849b7aeaca2cbf6f4b8f70">session</a>-&gt;<a class="code hl_variable" href="structcoap__session__t.html#ab360022130771a166ea0e93a1876ced4">con_active</a>) {</div>
<div class="line"><a id="l00994" name="l00994"></a><span class="lineno">  994</span>    node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a20ff974763849b7aeaca2cbf6f4b8f70">session</a>-&gt;<a class="code hl_variable" href="structcoap__session__t.html#ab360022130771a166ea0e93a1876ced4">con_active</a>--;</div>
<div class="line"><a id="l00995" name="l00995"></a><span class="lineno">  995</span>    <span class="keywordflow">if</span> (node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a20ff974763849b7aeaca2cbf6f4b8f70">session</a>-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a382b6afaed298581b57d62aaf043cfe3">state</a> == <a class="code hl_define" href="coap__session_8h.html#a954b835ecd156cde63fee7d5f279ab32">COAP_SESSION_STATE_ESTABLISHED</a>) {</div>
<div class="line"><a id="l00996" name="l00996"></a><span class="lineno">  996</span>      <span class="comment">/*</span></div>
<div class="line"><a id="l00997" name="l00997"></a><span class="lineno">  997</span><span class="comment">       * As there may be another CON in a different queue entry on the same</span></div>
<div class="line"><a id="l00998" name="l00998"></a><span class="lineno">  998</span><span class="comment">       * session that needs to be immediately released,</span></div>
<div class="line"><a id="l00999" name="l00999"></a><span class="lineno">  999</span><span class="comment">       * coap_session_connected() is called.</span></div>
<div class="line"><a id="l01000" name="l01000"></a><span class="lineno"> 1000</span><span class="comment">       * However, there is the possibility coap_wait_ack() may be called for</span></div>
<div class="line"><a id="l01001" name="l01001"></a><span class="lineno"> 1001</span><span class="comment">       * this node (queue) and re-added to context-&gt;sendqueue.</span></div>
<div class="line"><a id="l01002" name="l01002"></a><span class="lineno"> 1002</span><span class="comment">       * coap_delete_node(node) called shortly will handle this and remove it.</span></div>
<div class="line"><a id="l01003" name="l01003"></a><span class="lineno"> 1003</span><span class="comment">       */</span></div>
<div class="line"><a id="l01004" name="l01004"></a><span class="lineno"> 1004</span>      <a class="code hl_function" href="coap__session_8c.html#aa8b3a2da8480911b0216dad076038cb6">coap_session_connected</a>(node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a20ff974763849b7aeaca2cbf6f4b8f70">session</a>);</div>
<div class="line"><a id="l01005" name="l01005"></a><span class="lineno"> 1005</span>    }</div>
<div class="line"><a id="l01006" name="l01006"></a><span class="lineno"> 1006</span> }</div>
<div class="line"><a id="l01007" name="l01007"></a><span class="lineno"> 1007</span> </div>
<div class="line"><a id="l01008" name="l01008"></a><span class="lineno"> 1008</span>  <span class="comment">/* And finally delete the node */</span></div>
<div class="line"><a id="l01009" name="l01009"></a><span class="lineno"> 1009</span>  <span class="keywordflow">if</span> (node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a0d5796b82924c69852860053020d0684">type</a> == <a class="code hl_define" href="pdu_8h.html#ab6ad49de4b14e7cf5bd0a2a1a87eef2f">COAP_MESSAGE_CON</a> &amp;&amp; context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a610b7410b2c13c8908590d671243f125">nack_handler</a>)</div>
<div class="line"><a id="l01010" name="l01010"></a><span class="lineno"> 1010</span>    context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a610b7410b2c13c8908590d671243f125">nack_handler</a>(context, node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a20ff974763849b7aeaca2cbf6f4b8f70">session</a>, node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a>, <a class="code hl_enumvalue" href="coap__io_8h.html#a7ff2bb32137ca684be5539c156bdc418a607bec03e9375a1f176857c48d85e045">COAP_NACK_TOO_MANY_RETRIES</a>, node-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#aeded9dd536f54ee47418575711e7dbac">id</a>);</div>
<div class="line"><a id="l01011" name="l01011"></a><span class="lineno"> 1011</span>  <a class="code hl_function" href="net_8c.html#a44c39a2314035989d3e07b9d9328e08c">coap_delete_node</a>(node);</div>
<div class="line"><a id="l01012" name="l01012"></a><span class="lineno"> 1012</span>  <span class="keywordflow">return</span> <a class="code hl_define" href="pdu_8h.html#afe70beb6b87ece4aca2d2735c759c625">COAP_INVALID_TID</a>;</div>
<div class="line"><a id="l01013" name="l01013"></a><span class="lineno"> 1013</span>}</div>
</div>
<div class="line"><a id="l01014" name="l01014"></a><span class="lineno"> 1014</span> </div>
<div class="line"><a id="l01015" name="l01015"></a><span class="lineno"> 1015</span><span class="preprocessor">#ifdef WITH_LWIP</span></div>
<div class="line"><a id="l01016" name="l01016"></a><span class="lineno"> 1016</span><span class="comment">/* WITH_LWIP, this is handled by coap_recv in a different way */</span></div>
<div class="line"><a id="l01017" name="l01017"></a><span class="lineno"> 1017</span><span class="keywordtype">void</span></div>
<div class="line"><a id="l01018" name="l01018"></a><span class="lineno"> 1018</span><a class="code hl_function" href="net_8c.html#a0748d791fd2af516dd93fbadb660d440">coap_read</a>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *ctx, <a class="code hl_typedef" href="group__clock.html#ga97ff1502e211b4ee6c3f15a598833438">coap_tick_t</a> now) {</div>
<div class="line"><a id="l01019" name="l01019"></a><span class="lineno"> 1019</span>  <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l01020" name="l01020"></a><span class="lineno"> 1020</span>}</div>
<div class="line"><a id="l01021" name="l01021"></a><span class="lineno"> 1021</span><span class="preprocessor">#else </span><span class="comment">/* WITH_LWIP */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l01022" name="l01022"></a><span class="lineno"> 1022</span> </div>
<div class="line"><a id="l01023" name="l01023"></a><span class="lineno"> 1023</span><span class="keyword">static</span> <span class="keywordtype">int</span></div>
<div class="foldopen" id="foldopen01024" data-start="{" data-end="}">
<div class="line"><a id="l01024" name="l01024"></a><span class="lineno"><a class="line" href="net_8c.html#a8534f7860b14e0743529daff196a27ce"> 1024</a></span><a class="code hl_function" href="net_8c.html#a8534f7860b14e0743529daff196a27ce">coap_handle_dgram_for_proto</a>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *ctx, <a class="code hl_struct" href="structcoap__session__t.html">coap_session_t</a> *session, <a class="code hl_struct" href="structcoap__packet__t.html">coap_packet_t</a> *packet) {</div>
<div class="line"><a id="l01025" name="l01025"></a><span class="lineno"> 1025</span>  <a class="code hl_typedef" href="uthash_8h.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a> *data;</div>
<div class="line"><a id="l01026" name="l01026"></a><span class="lineno"> 1026</span>  <span class="keywordtype">size_t</span> data_len;</div>
<div class="line"><a id="l01027" name="l01027"></a><span class="lineno"> 1027</span>  <span class="keywordtype">int</span> result = -1;</div>
<div class="line"><a id="l01028" name="l01028"></a><span class="lineno"> 1028</span> </div>
<div class="line"><a id="l01029" name="l01029"></a><span class="lineno"> 1029</span>  <a class="code hl_function" href="coap__io_8c.html#a4bc4949c9ad150282ec082c99510046b">coap_packet_get_memmapped</a>(packet, &amp;data, &amp;data_len);</div>
<div class="line"><a id="l01030" name="l01030"></a><span class="lineno"> 1030</span> </div>
<div class="line"><a id="l01031" name="l01031"></a><span class="lineno"> 1031</span>  <span class="keywordflow">if</span> (session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a62089dd9c72836d322ae0ce0d0e7114f">proto</a> == <a class="code hl_define" href="pdu_8h.html#ac10ea7ae66e5e549b47854417311b560">COAP_PROTO_DTLS</a>) {</div>
<div class="line"><a id="l01032" name="l01032"></a><span class="lineno"> 1032</span>    <span class="keywordflow">if</span> (session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#ac39d8e22dbd5389177a75819dab125ea">type</a> == <a class="code hl_define" href="coap__session_8h.html#a5f0ed55aa093f7c31ce220de378f15a1">COAP_SESSION_TYPE_HELLO</a>)</div>
<div class="line"><a id="l01033" name="l01033"></a><span class="lineno"> 1033</span>      result = <a class="code hl_function" href="coap__notls_8c.html#a6108ea63abb51311934ad4e2a4a8b28d">coap_dtls_hello</a>(session, data, data_len);</div>
<div class="line"><a id="l01034" name="l01034"></a><span class="lineno"> 1034</span>    <span class="keywordflow">else</span> <span class="keywordflow">if</span> (session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a9eb6890809e9aa01d225691bb4ae97db">tls</a>)</div>
<div class="line"><a id="l01035" name="l01035"></a><span class="lineno"> 1035</span>      result = <a class="code hl_function" href="coap__notls_8c.html#a56c73480c1bd1fa14c1727e026f82e17">coap_dtls_receive</a>(session, data, data_len);</div>
<div class="line"><a id="l01036" name="l01036"></a><span class="lineno"> 1036</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a62089dd9c72836d322ae0ce0d0e7114f">proto</a> == <a class="code hl_define" href="pdu_8h.html#aeda5d0dcadd6cbb8c13e1950fcff787a">COAP_PROTO_UDP</a>) {</div>
<div class="line"><a id="l01037" name="l01037"></a><span class="lineno"> 1037</span>    result = <a class="code hl_function" href="net_8c.html#a32887948ee273d1ad464ec47df194910">coap_handle_dgram</a>(ctx, session, data, data_len);</div>
<div class="line"><a id="l01038" name="l01038"></a><span class="lineno"> 1038</span>  }</div>
<div class="line"><a id="l01039" name="l01039"></a><span class="lineno"> 1039</span>  <span class="keywordflow">return</span> result;</div>
<div class="line"><a id="l01040" name="l01040"></a><span class="lineno"> 1040</span>}</div>
</div>
<div class="line"><a id="l01041" name="l01041"></a><span class="lineno"> 1041</span> </div>
<div class="line"><a id="l01042" name="l01042"></a><span class="lineno"> 1042</span><span class="keyword">static</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen01043" data-start="{" data-end="}">
<div class="line"><a id="l01043" name="l01043"></a><span class="lineno"><a class="line" href="net_8c.html#a9e7c7fc083799c942c9c44ebc190c833"> 1043</a></span><a class="code hl_function" href="net_8c.html#a9e7c7fc083799c942c9c44ebc190c833">coap_connect_session</a>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *ctx, <a class="code hl_struct" href="structcoap__session__t.html">coap_session_t</a> *session, <a class="code hl_typedef" href="group__clock.html#ga97ff1502e211b4ee6c3f15a598833438">coap_tick_t</a> now) {</div>
<div class="line"><a id="l01044" name="l01044"></a><span class="lineno"> 1044</span>  (void)ctx;</div>
<div class="line"><a id="l01045" name="l01045"></a><span class="lineno"> 1045</span>  <span class="keywordflow">if</span> (<a class="code hl_function" href="coap__io_8c.html#ae591a90d6202a1b7f82b1aa688614520">coap_socket_connect_tcp2</a>(&amp;session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a29f92f61ab5c863c90254ce71e3859eb">sock</a>, &amp;session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a527f7977596333c89e623c3deb621d25">local_addr</a>, &amp;session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a5e1b647f8b5ce42ea7a0d0893fb3504a">remote_addr</a>)) {</div>
<div class="line"><a id="l01046" name="l01046"></a><span class="lineno"> 1046</span>    session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a28348c0c301bce7201403aa5545ef2b6">last_rx_tx</a> = now;</div>
<div class="line"><a id="l01047" name="l01047"></a><span class="lineno"> 1047</span>    <a class="code hl_function" href="net_8c.html#a5e2cee998ccf618ac07aa54f5e5f8743">coap_handle_event</a>(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a8f8e37457b167cc8b95fadd7eeffd8d7">context</a>, <a class="code hl_define" href="group__events.html#gaf2a1235d6d66e20095721a60c5ccdf84">COAP_EVENT_TCP_CONNECTED</a>, session);</div>
<div class="line"><a id="l01048" name="l01048"></a><span class="lineno"> 1048</span>    <span class="keywordflow">if</span> (session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a62089dd9c72836d322ae0ce0d0e7114f">proto</a> == <a class="code hl_define" href="pdu_8h.html#a1dd5fe6cc335ea31d49f3eb469a5990a">COAP_PROTO_TCP</a>) {</div>
<div class="line"><a id="l01049" name="l01049"></a><span class="lineno"> 1049</span>      <a class="code hl_function" href="coap__session_8c.html#a2f455ec1572982a5ae404beac0cfbd53">coap_session_send_csm</a>(session);</div>
<div class="line"><a id="l01050" name="l01050"></a><span class="lineno"> 1050</span>    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a62089dd9c72836d322ae0ce0d0e7114f">proto</a> == <a class="code hl_define" href="pdu_8h.html#a6c9a1dd7b311e5a420e3a7c36b918a02">COAP_PROTO_TLS</a>) {</div>
<div class="line"><a id="l01051" name="l01051"></a><span class="lineno"> 1051</span>      <span class="keywordtype">int</span> connected = 0;</div>
<div class="line"><a id="l01052" name="l01052"></a><span class="lineno"> 1052</span>      session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a382b6afaed298581b57d62aaf043cfe3">state</a> = <a class="code hl_define" href="coap__session_8h.html#a3b04568c8db8bcced69f14b813805b7f">COAP_SESSION_STATE_HANDSHAKE</a>;</div>
<div class="line"><a id="l01053" name="l01053"></a><span class="lineno"> 1053</span>      session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a9eb6890809e9aa01d225691bb4ae97db">tls</a> = <a class="code hl_function" href="coap__notls_8c.html#af7d70ee719bade4e0a9c2f92b18fc2d6">coap_tls_new_client_session</a>(session, &amp;connected);</div>
<div class="line"><a id="l01054" name="l01054"></a><span class="lineno"> 1054</span>      <span class="keywordflow">if</span> (session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a9eb6890809e9aa01d225691bb4ae97db">tls</a>) {</div>
<div class="line"><a id="l01055" name="l01055"></a><span class="lineno"> 1055</span>        <span class="keywordflow">if</span> (connected) {</div>
<div class="line"><a id="l01056" name="l01056"></a><span class="lineno"> 1056</span>          <a class="code hl_function" href="net_8c.html#a5e2cee998ccf618ac07aa54f5e5f8743">coap_handle_event</a>(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a8f8e37457b167cc8b95fadd7eeffd8d7">context</a>, <a class="code hl_define" href="group__events.html#gaeedad13a6a9e652948097bb1f8290229">COAP_EVENT_DTLS_CONNECTED</a>, session);</div>
<div class="line"><a id="l01057" name="l01057"></a><span class="lineno"> 1057</span>          <a class="code hl_function" href="coap__session_8c.html#a2f455ec1572982a5ae404beac0cfbd53">coap_session_send_csm</a>(session);</div>
<div class="line"><a id="l01058" name="l01058"></a><span class="lineno"> 1058</span>        }</div>
<div class="line"><a id="l01059" name="l01059"></a><span class="lineno"> 1059</span>      } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l01060" name="l01060"></a><span class="lineno"> 1060</span>        <a class="code hl_function" href="net_8c.html#a5e2cee998ccf618ac07aa54f5e5f8743">coap_handle_event</a>(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a8f8e37457b167cc8b95fadd7eeffd8d7">context</a>, <a class="code hl_define" href="group__events.html#ga4b7987047870eb07d52a9bb7a04b04ad">COAP_EVENT_DTLS_ERROR</a>, session);</div>
<div class="line"><a id="l01061" name="l01061"></a><span class="lineno"> 1061</span>        <a class="code hl_function" href="coap__session_8c.html#ad3377d3198c10fa086502035ded9c268">coap_session_disconnected</a>(session, <a class="code hl_enumvalue" href="coap__io_8h.html#a7ff2bb32137ca684be5539c156bdc418a60a6eebe19b2f6701ed4fcc58886d830">COAP_NACK_TLS_FAILED</a>);</div>
<div class="line"><a id="l01062" name="l01062"></a><span class="lineno"> 1062</span>      }</div>
<div class="line"><a id="l01063" name="l01063"></a><span class="lineno"> 1063</span>    }</div>
<div class="line"><a id="l01064" name="l01064"></a><span class="lineno"> 1064</span>  } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l01065" name="l01065"></a><span class="lineno"> 1065</span>    <a class="code hl_function" href="net_8c.html#a5e2cee998ccf618ac07aa54f5e5f8743">coap_handle_event</a>(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a8f8e37457b167cc8b95fadd7eeffd8d7">context</a>, <a class="code hl_define" href="group__events.html#gaa06f99fe2908c1d1f14e114ebaa13bc6">COAP_EVENT_TCP_FAILED</a>, session);</div>
<div class="line"><a id="l01066" name="l01066"></a><span class="lineno"> 1066</span>    <a class="code hl_function" href="coap__session_8c.html#ad3377d3198c10fa086502035ded9c268">coap_session_disconnected</a>(session, <a class="code hl_enumvalue" href="coap__io_8h.html#a7ff2bb32137ca684be5539c156bdc418a06f5d92ff204a7c9784c37fe7c580795">COAP_NACK_NOT_DELIVERABLE</a>);</div>
<div class="line"><a id="l01067" name="l01067"></a><span class="lineno"> 1067</span>  }</div>
<div class="line"><a id="l01068" name="l01068"></a><span class="lineno"> 1068</span>}</div>
</div>
<div class="line"><a id="l01069" name="l01069"></a><span class="lineno"> 1069</span> </div>
<div class="line"><a id="l01070" name="l01070"></a><span class="lineno"> 1070</span><span class="keyword">static</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen01071" data-start="{" data-end="}">
<div class="line"><a id="l01071" name="l01071"></a><span class="lineno"><a class="line" href="net_8c.html#a8fe30a827bdd0d518fc5c5a3a860dfde"> 1071</a></span><a class="code hl_function" href="net_8c.html#a8fe30a827bdd0d518fc5c5a3a860dfde">coap_write_session</a>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *ctx, <a class="code hl_struct" href="structcoap__session__t.html">coap_session_t</a> *session, <a class="code hl_typedef" href="group__clock.html#ga97ff1502e211b4ee6c3f15a598833438">coap_tick_t</a> now) {</div>
<div class="line"><a id="l01072" name="l01072"></a><span class="lineno"> 1072</span>  (void)ctx;</div>
<div class="line"><a id="l01073" name="l01073"></a><span class="lineno"> 1073</span>  <a class="code hl_define" href="mem_8c.html#a3d4ae9c092e117c836f52dc7d7cee574">assert</a>(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a29f92f61ab5c863c90254ce71e3859eb">sock</a>.<a class="code hl_variable" href="structcoap__socket__t.html#afc857e7bf0427e0d08e2be5604bc5516">flags</a> &amp; <a class="code hl_define" href="coap__io_8h.html#af08709165965a0ce8298c23fbdfc36c1">COAP_SOCKET_CONNECTED</a>);</div>
<div class="line"><a id="l01074" name="l01074"></a><span class="lineno"> 1074</span> </div>
<div class="line"><a id="l01075" name="l01075"></a><span class="lineno"> 1075</span>  <span class="keywordflow">while</span> (session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a84e90d62fbc324bdf21041269befe30d">delayqueue</a>) {</div>
<div class="line"><a id="l01076" name="l01076"></a><span class="lineno"> 1076</span>    ssize_t bytes_written;</div>
<div class="line"><a id="l01077" name="l01077"></a><span class="lineno"> 1077</span>    <a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> *q = session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a84e90d62fbc324bdf21041269befe30d">delayqueue</a>;</div>
<div class="line"><a id="l01078" name="l01078"></a><span class="lineno"> 1078</span>    <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, <span class="stringliteral">&quot;** %s: tid=%d: transmitted after delay\n&quot;</span>,</div>
<div class="line"><a id="l01079" name="l01079"></a><span class="lineno"> 1079</span>             <a class="code hl_function" href="group__logging.html#gabf09c67f27059ca278900e7e8fdd475e">coap_session_str</a>(session), (<span class="keywordtype">int</span>)q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a65877a685b1f3428d3dc872af075ddc1">tid</a>);</div>
<div class="line"><a id="l01080" name="l01080"></a><span class="lineno"> 1080</span>    <a class="code hl_define" href="mem_8c.html#a3d4ae9c092e117c836f52dc7d7cee574">assert</a>(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#af59543a005a01767382c6739cd710ee4">partial_write</a> &lt; q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#ac5018459a3078a5b896119d7464cb273">used_size</a> + q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a8e9b3dc1dc376c0d98a5e6940953cdc2">hdr_size</a>);</div>
<div class="line"><a id="l01081" name="l01081"></a><span class="lineno"> 1081</span>    <span class="keywordflow">switch</span> (session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a62089dd9c72836d322ae0ce0d0e7114f">proto</a>) {</div>
<div class="line"><a id="l01082" name="l01082"></a><span class="lineno"> 1082</span>      <span class="keywordflow">case</span> <a class="code hl_define" href="pdu_8h.html#a1dd5fe6cc335ea31d49f3eb469a5990a">COAP_PROTO_TCP</a>:</div>
<div class="line"><a id="l01083" name="l01083"></a><span class="lineno"> 1083</span>        bytes_written = <a class="code hl_function" href="coap__session_8c.html#adb19e1f2544b8b01424fa2e9dce41e7b">coap_session_write</a>(</div>
<div class="line"><a id="l01084" name="l01084"></a><span class="lineno"> 1084</span>          session,</div>
<div class="line"><a id="l01085" name="l01085"></a><span class="lineno"> 1085</span>          q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a3c42c790abb815d722fbebcd7702a200">token</a> - q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a8e9b3dc1dc376c0d98a5e6940953cdc2">hdr_size</a> - session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#af59543a005a01767382c6739cd710ee4">partial_write</a>,</div>
<div class="line"><a id="l01086" name="l01086"></a><span class="lineno"> 1086</span>          q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#ac5018459a3078a5b896119d7464cb273">used_size</a> + q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a8e9b3dc1dc376c0d98a5e6940953cdc2">hdr_size</a> - session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#af59543a005a01767382c6739cd710ee4">partial_write</a></div>
<div class="line"><a id="l01087" name="l01087"></a><span class="lineno"> 1087</span>        );</div>
<div class="line"><a id="l01088" name="l01088"></a><span class="lineno"> 1088</span>        <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01089" name="l01089"></a><span class="lineno"> 1089</span>      <span class="keywordflow">case</span> <a class="code hl_define" href="pdu_8h.html#a6c9a1dd7b311e5a420e3a7c36b918a02">COAP_PROTO_TLS</a>:</div>
<div class="line"><a id="l01090" name="l01090"></a><span class="lineno"> 1090</span>        bytes_written = <a class="code hl_function" href="coap__notls_8c.html#adaea05db98df31bd685353eb7099f356">coap_tls_write</a>(</div>
<div class="line"><a id="l01091" name="l01091"></a><span class="lineno"> 1091</span>          session,</div>
<div class="line"><a id="l01092" name="l01092"></a><span class="lineno"> 1092</span>          q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a3c42c790abb815d722fbebcd7702a200">token</a> - q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a8e9b3dc1dc376c0d98a5e6940953cdc2">hdr_size</a> - session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#af59543a005a01767382c6739cd710ee4">partial_write</a>,</div>
<div class="line"><a id="l01093" name="l01093"></a><span class="lineno"> 1093</span>          q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#ac5018459a3078a5b896119d7464cb273">used_size</a> + q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a8e9b3dc1dc376c0d98a5e6940953cdc2">hdr_size</a> - session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#af59543a005a01767382c6739cd710ee4">partial_write</a></div>
<div class="line"><a id="l01094" name="l01094"></a><span class="lineno"> 1094</span>        );</div>
<div class="line"><a id="l01095" name="l01095"></a><span class="lineno"> 1095</span>        <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01096" name="l01096"></a><span class="lineno"> 1096</span>      <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l01097" name="l01097"></a><span class="lineno"> 1097</span>        bytes_written = -1;</div>
<div class="line"><a id="l01098" name="l01098"></a><span class="lineno"> 1098</span>        <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01099" name="l01099"></a><span class="lineno"> 1099</span>    }</div>
<div class="line"><a id="l01100" name="l01100"></a><span class="lineno"> 1100</span>    <span class="keywordflow">if</span> (bytes_written &gt; 0)</div>
<div class="line"><a id="l01101" name="l01101"></a><span class="lineno"> 1101</span>      session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a28348c0c301bce7201403aa5545ef2b6">last_rx_tx</a> = now;</div>
<div class="line"><a id="l01102" name="l01102"></a><span class="lineno"> 1102</span>    <span class="keywordflow">if</span> (bytes_written &lt;= 0 || (<span class="keywordtype">size_t</span>)bytes_written &lt; q-&gt;pdu-&gt;used_size + q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a8e9b3dc1dc376c0d98a5e6940953cdc2">hdr_size</a> - session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#af59543a005a01767382c6739cd710ee4">partial_write</a>) {</div>
<div class="line"><a id="l01103" name="l01103"></a><span class="lineno"> 1103</span>      <span class="keywordflow">if</span> (bytes_written &gt; 0)</div>
<div class="line"><a id="l01104" name="l01104"></a><span class="lineno"> 1104</span>        session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#af59543a005a01767382c6739cd710ee4">partial_write</a> += (size_t)bytes_written;</div>
<div class="line"><a id="l01105" name="l01105"></a><span class="lineno"> 1105</span>      <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01106" name="l01106"></a><span class="lineno"> 1106</span>    }</div>
<div class="line"><a id="l01107" name="l01107"></a><span class="lineno"> 1107</span>    session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a84e90d62fbc324bdf21041269befe30d">delayqueue</a> = q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a75428f649543d0779fce28c8538247d6">next</a>;</div>
<div class="line"><a id="l01108" name="l01108"></a><span class="lineno"> 1108</span>    session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#af59543a005a01767382c6739cd710ee4">partial_write</a> = 0;</div>
<div class="line"><a id="l01109" name="l01109"></a><span class="lineno"> 1109</span>    <a class="code hl_function" href="net_8c.html#a44c39a2314035989d3e07b9d9328e08c">coap_delete_node</a>(q);</div>
<div class="line"><a id="l01110" name="l01110"></a><span class="lineno"> 1110</span>  }</div>
<div class="line"><a id="l01111" name="l01111"></a><span class="lineno"> 1111</span>}</div>
</div>
<div class="line"><a id="l01112" name="l01112"></a><span class="lineno"> 1112</span> </div>
<div class="line"><a id="l01113" name="l01113"></a><span class="lineno"> 1113</span><span class="preprocessor">#ifdef WITH_CONTIKI</span></div>
<div class="line"><a id="l01114" name="l01114"></a><span class="lineno"> 1114</span><a class="code hl_define" href="libcoap_8h.html#a58b4446dccd0b8c21b3532ef6b77a57d">COAP_STATIC_INLINE</a> <a class="code hl_struct" href="structcoap__packet__t.html">coap_packet_t</a> *</div>
<div class="line"><a id="l01115" name="l01115"></a><span class="lineno"> 1115</span>coap_malloc_packet(<span class="keywordtype">void</span>) {</div>
<div class="line"><a id="l01116" name="l01116"></a><span class="lineno"> 1116</span>  <span class="keywordflow">return</span> (<a class="code hl_struct" href="structcoap__packet__t.html">coap_packet_t</a> *)<a class="code hl_function" href="mem_8h.html#a9f9fd8d6cf24f9c45a5501aeba5acaf9">coap_malloc_type</a>(<a class="code hl_enumvalue" href="mem_8h.html#a703fa791ab7a14ff983df73b15e9c620ab4e8cb3171f267b830d97626ad7a8d69">COAP_PACKET</a>, 0);</div>
<div class="line"><a id="l01117" name="l01117"></a><span class="lineno"> 1117</span>}</div>
<div class="line"><a id="l01118" name="l01118"></a><span class="lineno"> 1118</span> </div>
<div class="line"><a id="l01119" name="l01119"></a><span class="lineno"> 1119</span><span class="keywordtype">void</span></div>
<div class="line"><a id="l01120" name="l01120"></a><span class="lineno"> 1120</span>coap_free_packet(<a class="code hl_struct" href="structcoap__packet__t.html">coap_packet_t</a> *packet) {</div>
<div class="line"><a id="l01121" name="l01121"></a><span class="lineno"> 1121</span>  <a class="code hl_function" href="mem_8h.html#ae7214e0c73a4d4290525873e739ed422">coap_free_type</a>(<a class="code hl_enumvalue" href="mem_8h.html#a703fa791ab7a14ff983df73b15e9c620ab4e8cb3171f267b830d97626ad7a8d69">COAP_PACKET</a>, packet);</div>
<div class="line"><a id="l01122" name="l01122"></a><span class="lineno"> 1122</span>}</div>
<div class="line"><a id="l01123" name="l01123"></a><span class="lineno"> 1123</span><span class="preprocessor">#endif </span><span class="comment">/* WITH_CONTIKI */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l01124" name="l01124"></a><span class="lineno"> 1124</span> </div>
<div class="line"><a id="l01125" name="l01125"></a><span class="lineno"> 1125</span><span class="keyword">static</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen01126" data-start="{" data-end="}">
<div class="line"><a id="l01126" name="l01126"></a><span class="lineno"><a class="line" href="net_8c.html#acd36f6fba6d30ab9557e0e6521f4a088"> 1126</a></span><a class="code hl_function" href="net_8c.html#acd36f6fba6d30ab9557e0e6521f4a088">coap_read_session</a>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *ctx, <a class="code hl_struct" href="structcoap__session__t.html">coap_session_t</a> *session, <a class="code hl_typedef" href="group__clock.html#ga97ff1502e211b4ee6c3f15a598833438">coap_tick_t</a> now) {</div>
<div class="line"><a id="l01127" name="l01127"></a><span class="lineno"> 1127</span><span class="preprocessor">#ifdef WITH_CONTIKI</span></div>
<div class="line"><a id="l01128" name="l01128"></a><span class="lineno"> 1128</span>  <a class="code hl_struct" href="structcoap__packet__t.html">coap_packet_t</a> *packet = coap_malloc_packet();</div>
<div class="line"><a id="l01129" name="l01129"></a><span class="lineno"> 1129</span>  <span class="keywordflow">if</span> ( !packet )</div>
<div class="line"><a id="l01130" name="l01130"></a><span class="lineno"> 1130</span>    <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l01131" name="l01131"></a><span class="lineno"> 1131</span><span class="preprocessor">#else </span><span class="comment">/* WITH_CONTIKI */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l01132" name="l01132"></a><span class="lineno"> 1132</span>  <a class="code hl_struct" href="structcoap__packet__t.html">coap_packet_t</a> s_packet;</div>
<div class="line"><a id="l01133" name="l01133"></a><span class="lineno"> 1133</span>  <a class="code hl_struct" href="structcoap__packet__t.html">coap_packet_t</a> *packet = &amp;s_packet;</div>
<div class="line"><a id="l01134" name="l01134"></a><span class="lineno"> 1134</span><span class="preprocessor">#endif </span><span class="comment">/* WITH_CONTIKI */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l01135" name="l01135"></a><span class="lineno"> 1135</span> </div>
<div class="line"><a id="l01136" name="l01136"></a><span class="lineno"> 1136</span>  <a class="code hl_define" href="mem_8c.html#a3d4ae9c092e117c836f52dc7d7cee574">assert</a>(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a29f92f61ab5c863c90254ce71e3859eb">sock</a>.<a class="code hl_variable" href="structcoap__socket__t.html#afc857e7bf0427e0d08e2be5604bc5516">flags</a> &amp; (<a class="code hl_define" href="coap__io_8h.html#af08709165965a0ce8298c23fbdfc36c1">COAP_SOCKET_CONNECTED</a> | <a class="code hl_define" href="coap__io_8h.html#a02a86a92a552fb9f6a82ebda631bfe38">COAP_SOCKET_MULTICAST</a>));</div>
<div class="line"><a id="l01137" name="l01137"></a><span class="lineno"> 1137</span> </div>
<div class="line"><a id="l01138" name="l01138"></a><span class="lineno"> 1138</span>  <span class="keywordflow">if</span> (<a class="code hl_define" href="coap__session_8h.html#a66dad7e75beba98bd59b096adbe39c35">COAP_PROTO_NOT_RELIABLE</a>(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a62089dd9c72836d322ae0ce0d0e7114f">proto</a>)) {</div>
<div class="line"><a id="l01139" name="l01139"></a><span class="lineno"> 1139</span>    ssize_t bytes_read;</div>
<div class="line"><a id="l01140" name="l01140"></a><span class="lineno"> 1140</span>    <a class="code hl_function" href="address_8h.html#ada8c7f0dd95000bb418860b970d8cb9f">coap_address_copy</a>(&amp;packet-&gt;<a class="code hl_variable" href="structcoap__packet__t.html#a51d58ff5bf1ffd31afc66fc6de6c0b87">src</a>, &amp;session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a5e1b647f8b5ce42ea7a0d0893fb3504a">remote_addr</a>);</div>
<div class="line"><a id="l01141" name="l01141"></a><span class="lineno"> 1141</span>    <a class="code hl_function" href="address_8h.html#ada8c7f0dd95000bb418860b970d8cb9f">coap_address_copy</a>(&amp;packet-&gt;<a class="code hl_variable" href="structcoap__packet__t.html#ad6b22cabb2e5f89e03b6c78926ad7de4">dst</a>, &amp;session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a527f7977596333c89e623c3deb621d25">local_addr</a>);</div>
<div class="line"><a id="l01142" name="l01142"></a><span class="lineno"> 1142</span>    bytes_read = ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a1ad04b95f7ee48fa3575f142a81c3b99">network_read</a>(&amp;session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a29f92f61ab5c863c90254ce71e3859eb">sock</a>, packet);</div>
<div class="line"><a id="l01143" name="l01143"></a><span class="lineno"> 1143</span> </div>
<div class="line"><a id="l01144" name="l01144"></a><span class="lineno"> 1144</span>    <span class="keywordflow">if</span> (bytes_read &lt; 0) {</div>
<div class="line"><a id="l01145" name="l01145"></a><span class="lineno"> 1145</span>      <span class="keywordflow">if</span> (bytes_read == -2)</div>
<div class="line"><a id="l01146" name="l01146"></a><span class="lineno"> 1146</span>        <a class="code hl_function" href="coap__session_8c.html#ad3377d3198c10fa086502035ded9c268">coap_session_disconnected</a>(session, <a class="code hl_enumvalue" href="coap__io_8h.html#a7ff2bb32137ca684be5539c156bdc418a9add7e23f77f49b0c7199b6cda1ea9c0">COAP_NACK_RST</a>);</div>
<div class="line"><a id="l01147" name="l01147"></a><span class="lineno"> 1147</span>      <span class="keywordflow">else</span></div>
<div class="line"><a id="l01148" name="l01148"></a><span class="lineno"> 1148</span>        <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446a8f6fe15bfe15104da6d1b360194a5400">LOG_WARNING</a>, <span class="stringliteral">&quot;*  %s: read error\n&quot;</span>,</div>
<div class="line"><a id="l01149" name="l01149"></a><span class="lineno"> 1149</span>                 <a class="code hl_function" href="group__logging.html#gabf09c67f27059ca278900e7e8fdd475e">coap_session_str</a>(session));</div>
<div class="line"><a id="l01150" name="l01150"></a><span class="lineno"> 1150</span>    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (bytes_read &gt; 0) {</div>
<div class="line"><a id="l01151" name="l01151"></a><span class="lineno"> 1151</span>      <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, <span class="stringliteral">&quot;*  %s: received %zd bytes\n&quot;</span>,</div>
<div class="line"><a id="l01152" name="l01152"></a><span class="lineno"> 1152</span>               <a class="code hl_function" href="group__logging.html#gabf09c67f27059ca278900e7e8fdd475e">coap_session_str</a>(session), bytes_read);</div>
<div class="line"><a id="l01153" name="l01153"></a><span class="lineno"> 1153</span>      session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a28348c0c301bce7201403aa5545ef2b6">last_rx_tx</a> = now;</div>
<div class="line"><a id="l01154" name="l01154"></a><span class="lineno"> 1154</span>      <a class="code hl_function" href="coap__io_8c.html#af218007b0248f28b60cd0420d466c1a2">coap_packet_set_addr</a>(packet, &amp;session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a5e1b647f8b5ce42ea7a0d0893fb3504a">remote_addr</a>, &amp;session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a527f7977596333c89e623c3deb621d25">local_addr</a>);</div>
<div class="line"><a id="l01155" name="l01155"></a><span class="lineno"> 1155</span>      <a class="code hl_function" href="net_8c.html#a8534f7860b14e0743529daff196a27ce">coap_handle_dgram_for_proto</a>(ctx, session, packet);</div>
<div class="line"><a id="l01156" name="l01156"></a><span class="lineno"> 1156</span>    }</div>
<div class="line"><a id="l01157" name="l01157"></a><span class="lineno"> 1157</span>  } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l01158" name="l01158"></a><span class="lineno"> 1158</span>    ssize_t bytes_read = 0;</div>
<div class="line"><a id="l01159" name="l01159"></a><span class="lineno"> 1159</span>    <span class="keyword">const</span> <a class="code hl_typedef" href="uthash_8h.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a> *p;</div>
<div class="line"><a id="l01160" name="l01160"></a><span class="lineno"> 1160</span>    <span class="keywordtype">int</span> retry;</div>
<div class="line"><a id="l01161" name="l01161"></a><span class="lineno"> 1161</span>    <span class="comment">/* adjust for LWIP */</span></div>
<div class="line"><a id="l01162" name="l01162"></a><span class="lineno"> 1162</span>    <a class="code hl_typedef" href="uthash_8h.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a> *buf = packet-&gt;<a class="code hl_variable" href="structcoap__packet__t.html#a8f29a6a1277ca984070c79a570fedf5d">payload</a>;</div>
<div class="line"><a id="l01163" name="l01163"></a><span class="lineno"> 1163</span>    <span class="keywordtype">size_t</span> buf_len = <span class="keyword">sizeof</span>(packet-&gt;<a class="code hl_variable" href="structcoap__packet__t.html#a8f29a6a1277ca984070c79a570fedf5d">payload</a>);</div>
<div class="line"><a id="l01164" name="l01164"></a><span class="lineno"> 1164</span> </div>
<div class="line"><a id="l01165" name="l01165"></a><span class="lineno"> 1165</span>    <span class="keywordflow">do</span> {</div>
<div class="line"><a id="l01166" name="l01166"></a><span class="lineno"> 1166</span>      <span class="keywordflow">if</span> (session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a62089dd9c72836d322ae0ce0d0e7114f">proto</a> == <a class="code hl_define" href="pdu_8h.html#a1dd5fe6cc335ea31d49f3eb469a5990a">COAP_PROTO_TCP</a>)</div>
<div class="line"><a id="l01167" name="l01167"></a><span class="lineno"> 1167</span>        bytes_read = <a class="code hl_function" href="coap__io_8c.html#a2bbd598665f98a1e2f899b475f01618b">coap_socket_read</a>(&amp;session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a29f92f61ab5c863c90254ce71e3859eb">sock</a>, buf, buf_len);</div>
<div class="line"><a id="l01168" name="l01168"></a><span class="lineno"> 1168</span>      <span class="keywordflow">else</span> <span class="keywordflow">if</span> (session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a62089dd9c72836d322ae0ce0d0e7114f">proto</a> == <a class="code hl_define" href="pdu_8h.html#a6c9a1dd7b311e5a420e3a7c36b918a02">COAP_PROTO_TLS</a>)</div>
<div class="line"><a id="l01169" name="l01169"></a><span class="lineno"> 1169</span>        bytes_read = <a class="code hl_function" href="coap__notls_8c.html#a873d77ef01ab93adcec48a1b60d46d77">coap_tls_read</a>(session, buf, buf_len);</div>
<div class="line"><a id="l01170" name="l01170"></a><span class="lineno"> 1170</span>      <span class="keywordflow">if</span> (bytes_read &gt; 0) {</div>
<div class="line"><a id="l01171" name="l01171"></a><span class="lineno"> 1171</span>        <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, <span class="stringliteral">&quot;*  %s: received %zd bytes\n&quot;</span>,</div>
<div class="line"><a id="l01172" name="l01172"></a><span class="lineno"> 1172</span>                 <a class="code hl_function" href="group__logging.html#gabf09c67f27059ca278900e7e8fdd475e">coap_session_str</a>(session), bytes_read);</div>
<div class="line"><a id="l01173" name="l01173"></a><span class="lineno"> 1173</span>        session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a28348c0c301bce7201403aa5545ef2b6">last_rx_tx</a> = now;</div>
<div class="line"><a id="l01174" name="l01174"></a><span class="lineno"> 1174</span>      }</div>
<div class="line"><a id="l01175" name="l01175"></a><span class="lineno"> 1175</span>      p = buf;</div>
<div class="line"><a id="l01176" name="l01176"></a><span class="lineno"> 1176</span>      retry = bytes_read == (ssize_t)buf_len;</div>
<div class="line"><a id="l01177" name="l01177"></a><span class="lineno"> 1177</span>      <span class="keywordflow">while</span> (bytes_read &gt; 0) {</div>
<div class="line"><a id="l01178" name="l01178"></a><span class="lineno"> 1178</span>        <span class="keywordflow">if</span> (session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a2d91d4ac95843b0a893e4d22f081f611">partial_pdu</a>) {</div>
<div class="line"><a id="l01179" name="l01179"></a><span class="lineno"> 1179</span>          <span class="keywordtype">size_t</span> len = session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a2d91d4ac95843b0a893e4d22f081f611">partial_pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#ac5018459a3078a5b896119d7464cb273">used_size</a></div>
<div class="line"><a id="l01180" name="l01180"></a><span class="lineno"> 1180</span>                     + session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a2d91d4ac95843b0a893e4d22f081f611">partial_pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a8e9b3dc1dc376c0d98a5e6940953cdc2">hdr_size</a></div>
<div class="line"><a id="l01181" name="l01181"></a><span class="lineno"> 1181</span>                     - session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a9a70d6293b5af4165ad58115f1a4e63a">partial_read</a>;</div>
<div class="line"><a id="l01182" name="l01182"></a><span class="lineno"> 1182</span>          <span class="keywordtype">size_t</span> n = <a class="code hl_define" href="net_8c.html#ac6afabdc09a49a433ee19d8a9486056d">min</a>(len, (<span class="keywordtype">size_t</span>)bytes_read);</div>
<div class="line"><a id="l01183" name="l01183"></a><span class="lineno"> 1183</span>          memcpy(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a2d91d4ac95843b0a893e4d22f081f611">partial_pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a3c42c790abb815d722fbebcd7702a200">token</a> - session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a2d91d4ac95843b0a893e4d22f081f611">partial_pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a8e9b3dc1dc376c0d98a5e6940953cdc2">hdr_size</a></div>
<div class="line"><a id="l01184" name="l01184"></a><span class="lineno"> 1184</span>                 + session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a9a70d6293b5af4165ad58115f1a4e63a">partial_read</a>, p, n);</div>
<div class="line"><a id="l01185" name="l01185"></a><span class="lineno"> 1185</span>          p += n;</div>
<div class="line"><a id="l01186" name="l01186"></a><span class="lineno"> 1186</span>          bytes_read -= n;</div>
<div class="line"><a id="l01187" name="l01187"></a><span class="lineno"> 1187</span>          <span class="keywordflow">if</span> (n == len) {</div>
<div class="line"><a id="l01188" name="l01188"></a><span class="lineno"> 1188</span>            <span class="keywordflow">if</span> (<a class="code hl_function" href="pdu_8c.html#a516ac8dae1f2fe33963f80cf15ec59a0">coap_pdu_parse_header</a>(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a2d91d4ac95843b0a893e4d22f081f611">partial_pdu</a>, session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a62089dd9c72836d322ae0ce0d0e7114f">proto</a>)</div>
<div class="line"><a id="l01189" name="l01189"></a><span class="lineno"> 1189</span>              &amp;&amp; <a class="code hl_function" href="pdu_8c.html#aa7fbcbe0f8d7415e82447747abf31d51">coap_pdu_parse_opt</a>(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a2d91d4ac95843b0a893e4d22f081f611">partial_pdu</a>)) {</div>
<div class="line"><a id="l01190" name="l01190"></a><span class="lineno"> 1190</span>              <a class="code hl_function" href="net_8c.html#a7bb944fc52f772655356d95724317401">coap_dispatch</a>(ctx, session, session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a2d91d4ac95843b0a893e4d22f081f611">partial_pdu</a>);</div>
<div class="line"><a id="l01191" name="l01191"></a><span class="lineno"> 1191</span>            }</div>
<div class="line"><a id="l01192" name="l01192"></a><span class="lineno"> 1192</span>            <a class="code hl_function" href="pdu_8c.html#a48581f968a30ef4278702eb1c16b7a90">coap_delete_pdu</a>(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a2d91d4ac95843b0a893e4d22f081f611">partial_pdu</a>);</div>
<div class="line"><a id="l01193" name="l01193"></a><span class="lineno"> 1193</span>            session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a2d91d4ac95843b0a893e4d22f081f611">partial_pdu</a> = NULL;</div>
<div class="line"><a id="l01194" name="l01194"></a><span class="lineno"> 1194</span>            session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a9a70d6293b5af4165ad58115f1a4e63a">partial_read</a> = 0;</div>
<div class="line"><a id="l01195" name="l01195"></a><span class="lineno"> 1195</span>          } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l01196" name="l01196"></a><span class="lineno"> 1196</span>            session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a9a70d6293b5af4165ad58115f1a4e63a">partial_read</a> += n;</div>
<div class="line"><a id="l01197" name="l01197"></a><span class="lineno"> 1197</span>          }</div>
<div class="line"><a id="l01198" name="l01198"></a><span class="lineno"> 1198</span>        } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a9a70d6293b5af4165ad58115f1a4e63a">partial_read</a> &gt; 0) {</div>
<div class="line"><a id="l01199" name="l01199"></a><span class="lineno"> 1199</span>          <span class="keywordtype">size_t</span> hdr_size = <a class="code hl_function" href="pdu_8c.html#a53c48f11ca3bc0d2106bd8b76f7430c8">coap_pdu_parse_header_size</a>(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a62089dd9c72836d322ae0ce0d0e7114f">proto</a>,</div>
<div class="line"><a id="l01200" name="l01200"></a><span class="lineno"> 1200</span>            session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a580cf637bab6c459b600f83b3fe0e720">read_header</a>);</div>
<div class="line"><a id="l01201" name="l01201"></a><span class="lineno"> 1201</span>          <span class="keywordtype">size_t</span> len = hdr_size - session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a9a70d6293b5af4165ad58115f1a4e63a">partial_read</a>;</div>
<div class="line"><a id="l01202" name="l01202"></a><span class="lineno"> 1202</span>          <span class="keywordtype">size_t</span> n = <a class="code hl_define" href="net_8c.html#ac6afabdc09a49a433ee19d8a9486056d">min</a>(len, (<span class="keywordtype">size_t</span>)bytes_read);</div>
<div class="line"><a id="l01203" name="l01203"></a><span class="lineno"> 1203</span>          memcpy(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a580cf637bab6c459b600f83b3fe0e720">read_header</a> + session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a9a70d6293b5af4165ad58115f1a4e63a">partial_read</a>, p, n);</div>
<div class="line"><a id="l01204" name="l01204"></a><span class="lineno"> 1204</span>          p += n;</div>
<div class="line"><a id="l01205" name="l01205"></a><span class="lineno"> 1205</span>          bytes_read -= n;</div>
<div class="line"><a id="l01206" name="l01206"></a><span class="lineno"> 1206</span>          <span class="keywordflow">if</span> (n == len) {</div>
<div class="line"><a id="l01207" name="l01207"></a><span class="lineno"> 1207</span>            <span class="keywordtype">size_t</span> size = <a class="code hl_function" href="pdu_8c.html#ad9460a91b9a9747bc85ff8e48a00f4d1">coap_pdu_parse_size</a>(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a62089dd9c72836d322ae0ce0d0e7114f">proto</a>, session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a580cf637bab6c459b600f83b3fe0e720">read_header</a>,</div>
<div class="line"><a id="l01208" name="l01208"></a><span class="lineno"> 1208</span>              hdr_size);</div>
<div class="line"><a id="l01209" name="l01209"></a><span class="lineno"> 1209</span>            session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a2d91d4ac95843b0a893e4d22f081f611">partial_pdu</a> = <a class="code hl_function" href="pdu_8c.html#a4f019ad11b0f633524175488aecbd7d1">coap_pdu_init</a>(0, 0, 0, size);</div>
<div class="line"><a id="l01210" name="l01210"></a><span class="lineno"> 1210</span>            <span class="keywordflow">if</span> (session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a2d91d4ac95843b0a893e4d22f081f611">partial_pdu</a> == NULL) {</div>
<div class="line"><a id="l01211" name="l01211"></a><span class="lineno"> 1211</span>              bytes_read = -1;</div>
<div class="line"><a id="l01212" name="l01212"></a><span class="lineno"> 1212</span>              <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01213" name="l01213"></a><span class="lineno"> 1213</span>            }</div>
<div class="line"><a id="l01214" name="l01214"></a><span class="lineno"> 1214</span>            <span class="keywordflow">if</span> (session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a2d91d4ac95843b0a893e4d22f081f611">partial_pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#ad526a13d4c00b670d67f557245c2236c">alloc_size</a> &lt; size &amp;&amp; !<a class="code hl_function" href="pdu_8c.html#add46ce956878a4121e8887b84c6d4a6b">coap_pdu_resize</a>(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a2d91d4ac95843b0a893e4d22f081f611">partial_pdu</a>, size)) {</div>
<div class="line"><a id="l01215" name="l01215"></a><span class="lineno"> 1215</span>              bytes_read = -1;</div>
<div class="line"><a id="l01216" name="l01216"></a><span class="lineno"> 1216</span>              <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01217" name="l01217"></a><span class="lineno"> 1217</span>            }</div>
<div class="line"><a id="l01218" name="l01218"></a><span class="lineno"> 1218</span>            session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a2d91d4ac95843b0a893e4d22f081f611">partial_pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a8e9b3dc1dc376c0d98a5e6940953cdc2">hdr_size</a> = (<a class="code hl_typedef" href="uthash_8h.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a>)hdr_size;</div>
<div class="line"><a id="l01219" name="l01219"></a><span class="lineno"> 1219</span>            session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a2d91d4ac95843b0a893e4d22f081f611">partial_pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#ac5018459a3078a5b896119d7464cb273">used_size</a> = size;</div>
<div class="line"><a id="l01220" name="l01220"></a><span class="lineno"> 1220</span>            memcpy(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a2d91d4ac95843b0a893e4d22f081f611">partial_pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a3c42c790abb815d722fbebcd7702a200">token</a> - hdr_size, session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a580cf637bab6c459b600f83b3fe0e720">read_header</a>, hdr_size);</div>
<div class="line"><a id="l01221" name="l01221"></a><span class="lineno"> 1221</span>            session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a9a70d6293b5af4165ad58115f1a4e63a">partial_read</a> = hdr_size;</div>
<div class="line"><a id="l01222" name="l01222"></a><span class="lineno"> 1222</span>            <span class="keywordflow">if</span> (size == 0) {</div>
<div class="line"><a id="l01223" name="l01223"></a><span class="lineno"> 1223</span>              <span class="keywordflow">if</span> (<a class="code hl_function" href="pdu_8c.html#a516ac8dae1f2fe33963f80cf15ec59a0">coap_pdu_parse_header</a>(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a2d91d4ac95843b0a893e4d22f081f611">partial_pdu</a>, session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a62089dd9c72836d322ae0ce0d0e7114f">proto</a>)) {</div>
<div class="line"><a id="l01224" name="l01224"></a><span class="lineno"> 1224</span>                <a class="code hl_function" href="net_8c.html#a7bb944fc52f772655356d95724317401">coap_dispatch</a>(ctx, session, session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a2d91d4ac95843b0a893e4d22f081f611">partial_pdu</a>);</div>
<div class="line"><a id="l01225" name="l01225"></a><span class="lineno"> 1225</span>              }</div>
<div class="line"><a id="l01226" name="l01226"></a><span class="lineno"> 1226</span>              <a class="code hl_function" href="pdu_8c.html#a48581f968a30ef4278702eb1c16b7a90">coap_delete_pdu</a>(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a2d91d4ac95843b0a893e4d22f081f611">partial_pdu</a>);</div>
<div class="line"><a id="l01227" name="l01227"></a><span class="lineno"> 1227</span>              session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a2d91d4ac95843b0a893e4d22f081f611">partial_pdu</a> = NULL;</div>
<div class="line"><a id="l01228" name="l01228"></a><span class="lineno"> 1228</span>              session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a9a70d6293b5af4165ad58115f1a4e63a">partial_read</a> = 0;</div>
<div class="line"><a id="l01229" name="l01229"></a><span class="lineno"> 1229</span>            }</div>
<div class="line"><a id="l01230" name="l01230"></a><span class="lineno"> 1230</span>          } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l01231" name="l01231"></a><span class="lineno"> 1231</span>            session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a9a70d6293b5af4165ad58115f1a4e63a">partial_read</a> += bytes_read;</div>
<div class="line"><a id="l01232" name="l01232"></a><span class="lineno"> 1232</span>          }</div>
<div class="line"><a id="l01233" name="l01233"></a><span class="lineno"> 1233</span>        } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l01234" name="l01234"></a><span class="lineno"> 1234</span>          session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a580cf637bab6c459b600f83b3fe0e720">read_header</a>[0] = *p++;</div>
<div class="line"><a id="l01235" name="l01235"></a><span class="lineno"> 1235</span>          bytes_read -= 1;</div>
<div class="line"><a id="l01236" name="l01236"></a><span class="lineno"> 1236</span>          <span class="keywordflow">if</span> (!<a class="code hl_function" href="pdu_8c.html#a53c48f11ca3bc0d2106bd8b76f7430c8">coap_pdu_parse_header_size</a>(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a62089dd9c72836d322ae0ce0d0e7114f">proto</a>,</div>
<div class="line"><a id="l01237" name="l01237"></a><span class="lineno"> 1237</span>            session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a580cf637bab6c459b600f83b3fe0e720">read_header</a>)) {</div>
<div class="line"><a id="l01238" name="l01238"></a><span class="lineno"> 1238</span>            bytes_read = -1;</div>
<div class="line"><a id="l01239" name="l01239"></a><span class="lineno"> 1239</span>            <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01240" name="l01240"></a><span class="lineno"> 1240</span>          }</div>
<div class="line"><a id="l01241" name="l01241"></a><span class="lineno"> 1241</span>          session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a9a70d6293b5af4165ad58115f1a4e63a">partial_read</a> = 1;</div>
<div class="line"><a id="l01242" name="l01242"></a><span class="lineno"> 1242</span>        }</div>
<div class="line"><a id="l01243" name="l01243"></a><span class="lineno"> 1243</span>      }</div>
<div class="line"><a id="l01244" name="l01244"></a><span class="lineno"> 1244</span>    } <span class="keywordflow">while</span> (bytes_read == 0 &amp;&amp; retry);</div>
<div class="line"><a id="l01245" name="l01245"></a><span class="lineno"> 1245</span>    <span class="keywordflow">if</span> (bytes_read &lt; 0)</div>
<div class="line"><a id="l01246" name="l01246"></a><span class="lineno"> 1246</span>      <a class="code hl_function" href="coap__session_8c.html#ad3377d3198c10fa086502035ded9c268">coap_session_disconnected</a>(session, <a class="code hl_enumvalue" href="coap__io_8h.html#a7ff2bb32137ca684be5539c156bdc418a06f5d92ff204a7c9784c37fe7c580795">COAP_NACK_NOT_DELIVERABLE</a>);</div>
<div class="line"><a id="l01247" name="l01247"></a><span class="lineno"> 1247</span>  }</div>
<div class="line"><a id="l01248" name="l01248"></a><span class="lineno"> 1248</span> </div>
<div class="line"><a id="l01249" name="l01249"></a><span class="lineno"> 1249</span><span class="preprocessor">#ifdef WITH_CONTIKI</span></div>
<div class="line"><a id="l01250" name="l01250"></a><span class="lineno"> 1250</span>  <span class="keywordflow">if</span> ( packet )</div>
<div class="line"><a id="l01251" name="l01251"></a><span class="lineno"> 1251</span>    coap_free_packet( packet );</div>
<div class="line"><a id="l01252" name="l01252"></a><span class="lineno"> 1252</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l01253" name="l01253"></a><span class="lineno"> 1253</span>}</div>
</div>
<div class="line"><a id="l01254" name="l01254"></a><span class="lineno"> 1254</span> </div>
<div class="line"><a id="l01255" name="l01255"></a><span class="lineno"> 1255</span><span class="keyword">static</span> <span class="keywordtype">int</span></div>
<div class="foldopen" id="foldopen01256" data-start="{" data-end="}">
<div class="line"><a id="l01256" name="l01256"></a><span class="lineno"><a class="line" href="net_8c.html#a44ffb4b70e537043e9a9cf344be24b92"> 1256</a></span><a class="code hl_function" href="net_8c.html#a44ffb4b70e537043e9a9cf344be24b92">coap_read_endpoint</a>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *ctx, <a class="code hl_struct" href="structcoap__endpoint__t.html">coap_endpoint_t</a> *endpoint, <a class="code hl_typedef" href="group__clock.html#ga97ff1502e211b4ee6c3f15a598833438">coap_tick_t</a> now) {</div>
<div class="line"><a id="l01257" name="l01257"></a><span class="lineno"> 1257</span>  ssize_t bytes_read = -1;</div>
<div class="line"><a id="l01258" name="l01258"></a><span class="lineno"> 1258</span>  <span class="keywordtype">int</span> result = -1;                <span class="comment">/* the value to be returned */</span></div>
<div class="line"><a id="l01259" name="l01259"></a><span class="lineno"> 1259</span><span class="preprocessor">#ifdef WITH_CONTIKI</span></div>
<div class="line"><a id="l01260" name="l01260"></a><span class="lineno"> 1260</span>  <a class="code hl_struct" href="structcoap__packet__t.html">coap_packet_t</a> *packet = coap_malloc_packet();</div>
<div class="line"><a id="l01261" name="l01261"></a><span class="lineno"> 1261</span><span class="preprocessor">#else </span><span class="comment">/* WITH_CONTIKI */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l01262" name="l01262"></a><span class="lineno"> 1262</span>  <a class="code hl_struct" href="structcoap__packet__t.html">coap_packet_t</a> s_packet;</div>
<div class="line"><a id="l01263" name="l01263"></a><span class="lineno"> 1263</span>  <a class="code hl_struct" href="structcoap__packet__t.html">coap_packet_t</a> *packet = &amp;s_packet;</div>
<div class="line"><a id="l01264" name="l01264"></a><span class="lineno"> 1264</span><span class="preprocessor">#endif </span><span class="comment">/* WITH_CONTIKI */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l01265" name="l01265"></a><span class="lineno"> 1265</span> </div>
<div class="line"><a id="l01266" name="l01266"></a><span class="lineno"> 1266</span>  <a class="code hl_define" href="mem_8c.html#a3d4ae9c092e117c836f52dc7d7cee574">assert</a>(<a class="code hl_define" href="coap__session_8h.html#a66dad7e75beba98bd59b096adbe39c35">COAP_PROTO_NOT_RELIABLE</a>(endpoint-&gt;<a class="code hl_variable" href="structcoap__endpoint__t.html#ad5a48a373d77ee179f28ebba6e064b55">proto</a>));</div>
<div class="line"><a id="l01267" name="l01267"></a><span class="lineno"> 1267</span>  <a class="code hl_define" href="mem_8c.html#a3d4ae9c092e117c836f52dc7d7cee574">assert</a>(endpoint-&gt;<a class="code hl_variable" href="structcoap__endpoint__t.html#ad0d9d4c7a4ff91f4e5149ea82cc02a38">sock</a>.<a class="code hl_variable" href="structcoap__socket__t.html#afc857e7bf0427e0d08e2be5604bc5516">flags</a> &amp; <a class="code hl_define" href="coap__io_8h.html#a4661ba56101390893cf9bdb5dbf5511b">COAP_SOCKET_BOUND</a>);</div>
<div class="line"><a id="l01268" name="l01268"></a><span class="lineno"> 1268</span> </div>
<div class="line"><a id="l01269" name="l01269"></a><span class="lineno"> 1269</span>  <span class="keywordflow">if</span> (packet) {</div>
<div class="line"><a id="l01270" name="l01270"></a><span class="lineno"> 1270</span>    <a class="code hl_function" href="address_8h.html#a86beb351f1b51437ccda4d673cc64148">coap_address_init</a>(&amp;packet-&gt;<a class="code hl_variable" href="structcoap__packet__t.html#a51d58ff5bf1ffd31afc66fc6de6c0b87">src</a>);</div>
<div class="line"><a id="l01271" name="l01271"></a><span class="lineno"> 1271</span>    <a class="code hl_function" href="address_8h.html#ada8c7f0dd95000bb418860b970d8cb9f">coap_address_copy</a>(&amp;packet-&gt;<a class="code hl_variable" href="structcoap__packet__t.html#ad6b22cabb2e5f89e03b6c78926ad7de4">dst</a>, &amp;endpoint-&gt;<a class="code hl_variable" href="structcoap__endpoint__t.html#ab7ae1b1eaada32ecebf9333945fbe4e0">bind_addr</a>);</div>
<div class="line"><a id="l01272" name="l01272"></a><span class="lineno"> 1272</span>    bytes_read = ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a1ad04b95f7ee48fa3575f142a81c3b99">network_read</a>(&amp;endpoint-&gt;<a class="code hl_variable" href="structcoap__endpoint__t.html#ad0d9d4c7a4ff91f4e5149ea82cc02a38">sock</a>, packet);</div>
<div class="line"><a id="l01273" name="l01273"></a><span class="lineno"> 1273</span>  }</div>
<div class="line"><a id="l01274" name="l01274"></a><span class="lineno"> 1274</span>  <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l01275" name="l01275"></a><span class="lineno"> 1275</span>    <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446a8f6fe15bfe15104da6d1b360194a5400">LOG_WARNING</a>, <span class="stringliteral">&quot;*  %s: Packet allocation failed\n&quot;</span>,</div>
<div class="line"><a id="l01276" name="l01276"></a><span class="lineno"> 1276</span>             <a class="code hl_function" href="group__logging.html#gaab3c752e5438040817ca0df50ceaf162">coap_endpoint_str</a>(endpoint));</div>
<div class="line"><a id="l01277" name="l01277"></a><span class="lineno"> 1277</span>    <span class="keywordflow">return</span> -1;</div>
<div class="line"><a id="l01278" name="l01278"></a><span class="lineno"> 1278</span>  }</div>
<div class="line"><a id="l01279" name="l01279"></a><span class="lineno"> 1279</span> </div>
<div class="line"><a id="l01280" name="l01280"></a><span class="lineno"> 1280</span>  <span class="keywordflow">if</span> (bytes_read &lt; 0) {</div>
<div class="line"><a id="l01281" name="l01281"></a><span class="lineno"> 1281</span>    <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446a8f6fe15bfe15104da6d1b360194a5400">LOG_WARNING</a>, <span class="stringliteral">&quot;*  %s: read failed\n&quot;</span>, <a class="code hl_function" href="group__logging.html#gaab3c752e5438040817ca0df50ceaf162">coap_endpoint_str</a>(endpoint));</div>
<div class="line"><a id="l01282" name="l01282"></a><span class="lineno"> 1282</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (bytes_read &gt; 0) {</div>
<div class="line"><a id="l01283" name="l01283"></a><span class="lineno"> 1283</span>    <a class="code hl_struct" href="structcoap__session__t.html">coap_session_t</a> *session = <a class="code hl_function" href="coap__session_8c.html#a444db8938d615f02af128c7e65d34678">coap_endpoint_get_session</a>(endpoint, packet, now);</div>
<div class="line"><a id="l01284" name="l01284"></a><span class="lineno"> 1284</span>    <span class="keywordflow">if</span> (session) {</div>
<div class="line"><a id="l01285" name="l01285"></a><span class="lineno"> 1285</span>      <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, <span class="stringliteral">&quot;*  %s: received %zd bytes\n&quot;</span>,</div>
<div class="line"><a id="l01286" name="l01286"></a><span class="lineno"> 1286</span>               <a class="code hl_function" href="group__logging.html#gabf09c67f27059ca278900e7e8fdd475e">coap_session_str</a>(session), bytes_read);</div>
<div class="line"><a id="l01287" name="l01287"></a><span class="lineno"> 1287</span>      result = <a class="code hl_function" href="net_8c.html#a8534f7860b14e0743529daff196a27ce">coap_handle_dgram_for_proto</a>(ctx, session, packet);</div>
<div class="line"><a id="l01288" name="l01288"></a><span class="lineno"> 1288</span>      <span class="keywordflow">if</span> (endpoint-&gt;<a class="code hl_variable" href="structcoap__endpoint__t.html#ad5a48a373d77ee179f28ebba6e064b55">proto</a> == <a class="code hl_define" href="pdu_8h.html#ac10ea7ae66e5e549b47854417311b560">COAP_PROTO_DTLS</a> &amp;&amp; session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#ac39d8e22dbd5389177a75819dab125ea">type</a> == <a class="code hl_define" href="coap__session_8h.html#a5f0ed55aa093f7c31ce220de378f15a1">COAP_SESSION_TYPE_HELLO</a> &amp;&amp; result == 1)</div>
<div class="line"><a id="l01289" name="l01289"></a><span class="lineno"> 1289</span>        <a class="code hl_function" href="coap__session_8c.html#a2dd08f1716885e31619c7890f06e9fdd">coap_endpoint_new_dtls_session</a>(endpoint, packet, now);</div>
<div class="line"><a id="l01290" name="l01290"></a><span class="lineno"> 1290</span>    }</div>
<div class="line"><a id="l01291" name="l01291"></a><span class="lineno"> 1291</span>  }</div>
<div class="line"><a id="l01292" name="l01292"></a><span class="lineno"> 1292</span> </div>
<div class="line"><a id="l01293" name="l01293"></a><span class="lineno"> 1293</span><span class="preprocessor">#ifdef WITH_CONTIKI</span></div>
<div class="line"><a id="l01294" name="l01294"></a><span class="lineno"> 1294</span>  <span class="keywordflow">if</span> (packet)</div>
<div class="line"><a id="l01295" name="l01295"></a><span class="lineno"> 1295</span>    coap_free_packet(packet);</div>
<div class="line"><a id="l01296" name="l01296"></a><span class="lineno"> 1296</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l01297" name="l01297"></a><span class="lineno"> 1297</span> </div>
<div class="line"><a id="l01298" name="l01298"></a><span class="lineno"> 1298</span>  <span class="keywordflow">return</span> result;</div>
<div class="line"><a id="l01299" name="l01299"></a><span class="lineno"> 1299</span>}</div>
</div>
<div class="line"><a id="l01300" name="l01300"></a><span class="lineno"> 1300</span> </div>
<div class="line"><a id="l01301" name="l01301"></a><span class="lineno"> 1301</span><span class="keyword">static</span> <span class="keywordtype">int</span></div>
<div class="foldopen" id="foldopen01302" data-start="{" data-end="}">
<div class="line"><a id="l01302" name="l01302"></a><span class="lineno"><a class="line" href="net_8c.html#a823b9397a80e37f7ae87a5581430c507"> 1302</a></span><a class="code hl_function" href="net_8c.html#a823b9397a80e37f7ae87a5581430c507">coap_write_endpoint</a>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *ctx, <a class="code hl_struct" href="structcoap__endpoint__t.html">coap_endpoint_t</a> *endpoint, <a class="code hl_typedef" href="group__clock.html#ga97ff1502e211b4ee6c3f15a598833438">coap_tick_t</a> now) {</div>
<div class="line"><a id="l01303" name="l01303"></a><span class="lineno"> 1303</span>  (void)ctx;</div>
<div class="line"><a id="l01304" name="l01304"></a><span class="lineno"> 1304</span>  (void)endpoint;</div>
<div class="line"><a id="l01305" name="l01305"></a><span class="lineno"> 1305</span>  (void)now;</div>
<div class="line"><a id="l01306" name="l01306"></a><span class="lineno"> 1306</span>  <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l01307" name="l01307"></a><span class="lineno"> 1307</span>}</div>
</div>
<div class="line"><a id="l01308" name="l01308"></a><span class="lineno"> 1308</span> </div>
<div class="line"><a id="l01309" name="l01309"></a><span class="lineno"> 1309</span><span class="keyword">static</span> <span class="keywordtype">int</span></div>
<div class="foldopen" id="foldopen01310" data-start="{" data-end="}">
<div class="line"><a id="l01310" name="l01310"></a><span class="lineno"><a class="line" href="net_8c.html#a7437c90770ffd13685e6a77799b4753b"> 1310</a></span><a class="code hl_function" href="net_8c.html#a7437c90770ffd13685e6a77799b4753b">coap_accept_endpoint</a>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *ctx, <a class="code hl_struct" href="structcoap__endpoint__t.html">coap_endpoint_t</a> *endpoint,</div>
<div class="line"><a id="l01311" name="l01311"></a><span class="lineno"> 1311</span>  <a class="code hl_typedef" href="group__clock.html#ga97ff1502e211b4ee6c3f15a598833438">coap_tick_t</a> now) {</div>
<div class="line"><a id="l01312" name="l01312"></a><span class="lineno"> 1312</span>  <a class="code hl_struct" href="structcoap__session__t.html">coap_session_t</a> *session = <a class="code hl_function" href="coap__session_8c.html#aafc6eaf74d9d37986133b2c9ffdb4991">coap_new_server_session</a>(ctx, endpoint);</div>
<div class="line"><a id="l01313" name="l01313"></a><span class="lineno"> 1313</span>  <span class="keywordflow">if</span> (session)</div>
<div class="line"><a id="l01314" name="l01314"></a><span class="lineno"> 1314</span>    session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a28348c0c301bce7201403aa5545ef2b6">last_rx_tx</a> = now;</div>
<div class="line"><a id="l01315" name="l01315"></a><span class="lineno"> 1315</span>  <span class="keywordflow">return</span> session != NULL;</div>
<div class="line"><a id="l01316" name="l01316"></a><span class="lineno"> 1316</span>}</div>
</div>
<div class="line"><a id="l01317" name="l01317"></a><span class="lineno"> 1317</span> </div>
<div class="line"><a id="l01318" name="l01318"></a><span class="lineno"> 1318</span><span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen01319" data-start="{" data-end="}">
<div class="line"><a id="l01319" name="l01319"></a><span class="lineno"><a class="line" href="net_8c.html#a0748d791fd2af516dd93fbadb660d440"> 1319</a></span><a class="code hl_function" href="net_8c.html#a0748d791fd2af516dd93fbadb660d440">coap_read</a>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *ctx, <a class="code hl_typedef" href="group__clock.html#ga97ff1502e211b4ee6c3f15a598833438">coap_tick_t</a> now) {</div>
<div class="line"><a id="l01320" name="l01320"></a><span class="lineno"> 1320</span>  <a class="code hl_struct" href="structcoap__endpoint__t.html">coap_endpoint_t</a> *ep, *tmp;</div>
<div class="line"><a id="l01321" name="l01321"></a><span class="lineno"> 1321</span>  <a class="code hl_struct" href="structcoap__session__t.html">coap_session_t</a> *s, *tmp_s;</div>
<div class="line"><a id="l01322" name="l01322"></a><span class="lineno"> 1322</span> </div>
<div class="line"><a id="l01323" name="l01323"></a><span class="lineno"> 1323</span>  <a class="code hl_define" href="utlist_8h.html#ad0a695664d31f0b929fd50b39ebcf0ef">LL_FOREACH_SAFE</a>(ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#ab7d5935f4a3e1c94fa6bb12bf6400006">endpoint</a>, ep, tmp) {</div>
<div class="line"><a id="l01324" name="l01324"></a><span class="lineno"> 1324</span>    <span class="keywordflow">if</span> ((ep-&gt;<a class="code hl_variable" href="structcoap__endpoint__t.html#ad0d9d4c7a4ff91f4e5149ea82cc02a38">sock</a>.<a class="code hl_variable" href="structcoap__socket__t.html#afc857e7bf0427e0d08e2be5604bc5516">flags</a> &amp; <a class="code hl_define" href="coap__io_8h.html#aedf6f7819e71e2c9d27f5b6e40cc7242">COAP_SOCKET_CAN_READ</a>) != 0)</div>
<div class="line"><a id="l01325" name="l01325"></a><span class="lineno"> 1325</span>      <a class="code hl_function" href="net_8c.html#a44ffb4b70e537043e9a9cf344be24b92">coap_read_endpoint</a>(ctx, ep, now);</div>
<div class="line"><a id="l01326" name="l01326"></a><span class="lineno"> 1326</span>    <span class="keywordflow">if</span> ((ep-&gt;<a class="code hl_variable" href="structcoap__endpoint__t.html#ad0d9d4c7a4ff91f4e5149ea82cc02a38">sock</a>.<a class="code hl_variable" href="structcoap__socket__t.html#afc857e7bf0427e0d08e2be5604bc5516">flags</a> &amp; <a class="code hl_define" href="coap__io_8h.html#a3f6d0fff4e1a32c87c39cc3b9058020b">COAP_SOCKET_CAN_WRITE</a>) != 0)</div>
<div class="line"><a id="l01327" name="l01327"></a><span class="lineno"> 1327</span>      <a class="code hl_function" href="net_8c.html#a823b9397a80e37f7ae87a5581430c507">coap_write_endpoint</a>(ctx, ep, now);</div>
<div class="line"><a id="l01328" name="l01328"></a><span class="lineno"> 1328</span>    <span class="keywordflow">if</span> ((ep-&gt;<a class="code hl_variable" href="structcoap__endpoint__t.html#ad0d9d4c7a4ff91f4e5149ea82cc02a38">sock</a>.<a class="code hl_variable" href="structcoap__socket__t.html#afc857e7bf0427e0d08e2be5604bc5516">flags</a> &amp; <a class="code hl_define" href="coap__io_8h.html#a907be6134bbd7d4799966acb3de4e4cf">COAP_SOCKET_CAN_ACCEPT</a>) != 0)</div>
<div class="line"><a id="l01329" name="l01329"></a><span class="lineno"> 1329</span>      <a class="code hl_function" href="net_8c.html#a7437c90770ffd13685e6a77799b4753b">coap_accept_endpoint</a>(ctx, ep, now);</div>
<div class="line"><a id="l01330" name="l01330"></a><span class="lineno"> 1330</span>    <a class="code hl_define" href="utlist_8h.html#ad0a695664d31f0b929fd50b39ebcf0ef">LL_FOREACH_SAFE</a>(ep-&gt;<a class="code hl_variable" href="structcoap__endpoint__t.html#a6032778926bccf2e0c4f093eff03bb51">sessions</a>, s, tmp_s) {</div>
<div class="line"><a id="l01331" name="l01331"></a><span class="lineno"> 1331</span>      <span class="keywordflow">if</span> ((s-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a29f92f61ab5c863c90254ce71e3859eb">sock</a>.<a class="code hl_variable" href="structcoap__socket__t.html#afc857e7bf0427e0d08e2be5604bc5516">flags</a> &amp; <a class="code hl_define" href="coap__io_8h.html#aedf6f7819e71e2c9d27f5b6e40cc7242">COAP_SOCKET_CAN_READ</a>) != 0) {</div>
<div class="line"><a id="l01332" name="l01332"></a><span class="lineno"> 1332</span>        <span class="comment">/* Make sure the session object is not deleted in one of the callbacks  */</span></div>
<div class="line"><a id="l01333" name="l01333"></a><span class="lineno"> 1333</span>        <a class="code hl_function" href="coap__session_8c.html#ae37bac62f8de2cecd968ec1c26eb23b4">coap_session_reference</a>(s);</div>
<div class="line"><a id="l01334" name="l01334"></a><span class="lineno"> 1334</span>        <a class="code hl_function" href="net_8c.html#acd36f6fba6d30ab9557e0e6521f4a088">coap_read_session</a>(ctx, s, now);</div>
<div class="line"><a id="l01335" name="l01335"></a><span class="lineno"> 1335</span>        <a class="code hl_function" href="coap__session_8c.html#a9aee135ba884d7c143b11bc42fd23e53">coap_session_release</a>(s);</div>
<div class="line"><a id="l01336" name="l01336"></a><span class="lineno"> 1336</span>      }</div>
<div class="line"><a id="l01337" name="l01337"></a><span class="lineno"> 1337</span>      <span class="keywordflow">if</span> ((s-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a29f92f61ab5c863c90254ce71e3859eb">sock</a>.<a class="code hl_variable" href="structcoap__socket__t.html#afc857e7bf0427e0d08e2be5604bc5516">flags</a> &amp; <a class="code hl_define" href="coap__io_8h.html#a3f6d0fff4e1a32c87c39cc3b9058020b">COAP_SOCKET_CAN_WRITE</a>) != 0) {</div>
<div class="line"><a id="l01338" name="l01338"></a><span class="lineno"> 1338</span>        <span class="comment">/* Make sure the session object is not deleted in one of the callbacks  */</span></div>
<div class="line"><a id="l01339" name="l01339"></a><span class="lineno"> 1339</span>        <a class="code hl_function" href="coap__session_8c.html#ae37bac62f8de2cecd968ec1c26eb23b4">coap_session_reference</a>(s);</div>
<div class="line"><a id="l01340" name="l01340"></a><span class="lineno"> 1340</span>        <a class="code hl_function" href="net_8c.html#a8fe30a827bdd0d518fc5c5a3a860dfde">coap_write_session</a>(ctx, s, now);</div>
<div class="line"><a id="l01341" name="l01341"></a><span class="lineno"> 1341</span>        <a class="code hl_function" href="coap__session_8c.html#a9aee135ba884d7c143b11bc42fd23e53">coap_session_release</a>(s);</div>
<div class="line"><a id="l01342" name="l01342"></a><span class="lineno"> 1342</span>      }</div>
<div class="line"><a id="l01343" name="l01343"></a><span class="lineno"> 1343</span>    }</div>
<div class="line"><a id="l01344" name="l01344"></a><span class="lineno"> 1344</span>  }</div>
<div class="line"><a id="l01345" name="l01345"></a><span class="lineno"> 1345</span> </div>
<div class="line"><a id="l01346" name="l01346"></a><span class="lineno"> 1346</span>  <a class="code hl_define" href="utlist_8h.html#ad0a695664d31f0b929fd50b39ebcf0ef">LL_FOREACH_SAFE</a>(ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a5984a41d68fae2a68703f6afd940671f">sessions</a>, s, tmp_s) {</div>
<div class="line"><a id="l01347" name="l01347"></a><span class="lineno"> 1347</span>    <span class="keywordflow">if</span> ((s-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a29f92f61ab5c863c90254ce71e3859eb">sock</a>.<a class="code hl_variable" href="structcoap__socket__t.html#afc857e7bf0427e0d08e2be5604bc5516">flags</a> &amp; <a class="code hl_define" href="coap__io_8h.html#ac8c2a11c75a9efd272737eaec3e4ac5c">COAP_SOCKET_CAN_CONNECT</a>) != 0) {</div>
<div class="line"><a id="l01348" name="l01348"></a><span class="lineno"> 1348</span>      <span class="comment">/* Make sure the session object is not deleted in one of the callbacks  */</span></div>
<div class="line"><a id="l01349" name="l01349"></a><span class="lineno"> 1349</span>      <a class="code hl_function" href="coap__session_8c.html#ae37bac62f8de2cecd968ec1c26eb23b4">coap_session_reference</a>(s);</div>
<div class="line"><a id="l01350" name="l01350"></a><span class="lineno"> 1350</span>      <a class="code hl_function" href="net_8c.html#a9e7c7fc083799c942c9c44ebc190c833">coap_connect_session</a>(ctx, s, now);</div>
<div class="line"><a id="l01351" name="l01351"></a><span class="lineno"> 1351</span>      <a class="code hl_function" href="coap__session_8c.html#a9aee135ba884d7c143b11bc42fd23e53">coap_session_release</a>( s );</div>
<div class="line"><a id="l01352" name="l01352"></a><span class="lineno"> 1352</span>    }</div>
<div class="line"><a id="l01353" name="l01353"></a><span class="lineno"> 1353</span>    <span class="keywordflow">if</span> ((s-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a29f92f61ab5c863c90254ce71e3859eb">sock</a>.<a class="code hl_variable" href="structcoap__socket__t.html#afc857e7bf0427e0d08e2be5604bc5516">flags</a> &amp; <a class="code hl_define" href="coap__io_8h.html#aedf6f7819e71e2c9d27f5b6e40cc7242">COAP_SOCKET_CAN_READ</a>) != 0) {</div>
<div class="line"><a id="l01354" name="l01354"></a><span class="lineno"> 1354</span>      <span class="comment">/* Make sure the session object is not deleted in one of the callbacks  */</span></div>
<div class="line"><a id="l01355" name="l01355"></a><span class="lineno"> 1355</span>      <a class="code hl_function" href="coap__session_8c.html#ae37bac62f8de2cecd968ec1c26eb23b4">coap_session_reference</a>(s);</div>
<div class="line"><a id="l01356" name="l01356"></a><span class="lineno"> 1356</span>      <a class="code hl_function" href="net_8c.html#acd36f6fba6d30ab9557e0e6521f4a088">coap_read_session</a>(ctx, s, now);</div>
<div class="line"><a id="l01357" name="l01357"></a><span class="lineno"> 1357</span>      <a class="code hl_function" href="coap__session_8c.html#a9aee135ba884d7c143b11bc42fd23e53">coap_session_release</a>(s);</div>
<div class="line"><a id="l01358" name="l01358"></a><span class="lineno"> 1358</span>    }</div>
<div class="line"><a id="l01359" name="l01359"></a><span class="lineno"> 1359</span>    <span class="keywordflow">if</span> ((s-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a29f92f61ab5c863c90254ce71e3859eb">sock</a>.<a class="code hl_variable" href="structcoap__socket__t.html#afc857e7bf0427e0d08e2be5604bc5516">flags</a> &amp; <a class="code hl_define" href="coap__io_8h.html#a3f6d0fff4e1a32c87c39cc3b9058020b">COAP_SOCKET_CAN_WRITE</a>) != 0) {</div>
<div class="line"><a id="l01360" name="l01360"></a><span class="lineno"> 1360</span>      <span class="comment">/* Make sure the session object is not deleted in one of the callbacks  */</span></div>
<div class="line"><a id="l01361" name="l01361"></a><span class="lineno"> 1361</span>      <a class="code hl_function" href="coap__session_8c.html#ae37bac62f8de2cecd968ec1c26eb23b4">coap_session_reference</a>(s);</div>
<div class="line"><a id="l01362" name="l01362"></a><span class="lineno"> 1362</span>      <a class="code hl_function" href="net_8c.html#a8fe30a827bdd0d518fc5c5a3a860dfde">coap_write_session</a>(ctx, s, now);</div>
<div class="line"><a id="l01363" name="l01363"></a><span class="lineno"> 1363</span>      <a class="code hl_function" href="coap__session_8c.html#a9aee135ba884d7c143b11bc42fd23e53">coap_session_release</a>( s );</div>
<div class="line"><a id="l01364" name="l01364"></a><span class="lineno"> 1364</span>    }</div>
<div class="line"><a id="l01365" name="l01365"></a><span class="lineno"> 1365</span>  }</div>
<div class="line"><a id="l01366" name="l01366"></a><span class="lineno"> 1366</span>}</div>
</div>
<div class="line"><a id="l01367" name="l01367"></a><span class="lineno"> 1367</span> </div>
<div class="line"><a id="l01368" name="l01368"></a><span class="lineno"> 1368</span><span class="keywordtype">int</span></div>
<div class="foldopen" id="foldopen01369" data-start="{" data-end="}">
<div class="line"><a id="l01369" name="l01369"></a><span class="lineno"><a class="line" href="net_8c.html#a32887948ee273d1ad464ec47df194910"> 1369</a></span><a class="code hl_function" href="net_8c.html#a32887948ee273d1ad464ec47df194910">coap_handle_dgram</a>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *ctx, <a class="code hl_struct" href="structcoap__session__t.html">coap_session_t</a> *session,</div>
<div class="line"><a id="l01370" name="l01370"></a><span class="lineno"> 1370</span>  <a class="code hl_typedef" href="uthash_8h.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a> *msg, <span class="keywordtype">size_t</span> msg_len) {</div>
<div class="line"><a id="l01371" name="l01371"></a><span class="lineno"> 1371</span> </div>
<div class="line"><a id="l01372" name="l01372"></a><span class="lineno"> 1372</span>  <a class="code hl_struct" href="structcoap__pdu__t.html">coap_pdu_t</a> *pdu = NULL;</div>
<div class="line"><a id="l01373" name="l01373"></a><span class="lineno"> 1373</span> </div>
<div class="line"><a id="l01374" name="l01374"></a><span class="lineno"> 1374</span>  <a class="code hl_define" href="mem_8c.html#a3d4ae9c092e117c836f52dc7d7cee574">assert</a>(<a class="code hl_define" href="coap__session_8h.html#a66dad7e75beba98bd59b096adbe39c35">COAP_PROTO_NOT_RELIABLE</a>(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a62089dd9c72836d322ae0ce0d0e7114f">proto</a>));</div>
<div class="line"><a id="l01375" name="l01375"></a><span class="lineno"> 1375</span> </div>
<div class="line"><a id="l01376" name="l01376"></a><span class="lineno"> 1376</span>  pdu = <a class="code hl_function" href="pdu_8c.html#a4f019ad11b0f633524175488aecbd7d1">coap_pdu_init</a>(0, 0, 0, msg_len - 4);</div>
<div class="line"><a id="l01377" name="l01377"></a><span class="lineno"> 1377</span>  <span class="keywordflow">if</span> (!pdu)</div>
<div class="line"><a id="l01378" name="l01378"></a><span class="lineno"> 1378</span>    <span class="keywordflow">goto</span> error;</div>
<div class="line"><a id="l01379" name="l01379"></a><span class="lineno"> 1379</span> </div>
<div class="line"><a id="l01380" name="l01380"></a><span class="lineno"> 1380</span>  <span class="keywordflow">if</span> (!<a class="code hl_function" href="pdu_8c.html#ab9981ea277da8bc4e5c4f82d6ca4c006">coap_pdu_parse</a>(session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a62089dd9c72836d322ae0ce0d0e7114f">proto</a>, msg, msg_len, pdu)) {</div>
<div class="line"><a id="l01381" name="l01381"></a><span class="lineno"> 1381</span>    <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446a8f6fe15bfe15104da6d1b360194a5400">LOG_WARNING</a>, <span class="stringliteral">&quot;discard malformed PDU\n&quot;</span>);</div>
<div class="line"><a id="l01382" name="l01382"></a><span class="lineno"> 1382</span>    <span class="keywordflow">goto</span> error;</div>
<div class="line"><a id="l01383" name="l01383"></a><span class="lineno"> 1383</span>  }</div>
<div class="line"><a id="l01384" name="l01384"></a><span class="lineno"> 1384</span> </div>
<div class="line"><a id="l01385" name="l01385"></a><span class="lineno"> 1385</span>  <a class="code hl_function" href="net_8c.html#a7bb944fc52f772655356d95724317401">coap_dispatch</a>(ctx, session, pdu);</div>
<div class="line"><a id="l01386" name="l01386"></a><span class="lineno"> 1386</span>  <a class="code hl_function" href="pdu_8c.html#a48581f968a30ef4278702eb1c16b7a90">coap_delete_pdu</a>(pdu);</div>
<div class="line"><a id="l01387" name="l01387"></a><span class="lineno"> 1387</span>  <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l01388" name="l01388"></a><span class="lineno"> 1388</span> </div>
<div class="line"><a id="l01389" name="l01389"></a><span class="lineno"> 1389</span>error:</div>
<div class="line"><a id="l01390" name="l01390"></a><span class="lineno"> 1390</span>  <span class="comment">/* FIXME: send back RST? */</span></div>
<div class="line"><a id="l01391" name="l01391"></a><span class="lineno"> 1391</span>  <a class="code hl_function" href="pdu_8c.html#a48581f968a30ef4278702eb1c16b7a90">coap_delete_pdu</a>(pdu);</div>
<div class="line"><a id="l01392" name="l01392"></a><span class="lineno"> 1392</span>  <span class="keywordflow">return</span> -1;</div>
<div class="line"><a id="l01393" name="l01393"></a><span class="lineno"> 1393</span>}</div>
</div>
<div class="line"><a id="l01394" name="l01394"></a><span class="lineno"> 1394</span><span class="preprocessor">#endif </span><span class="comment">/* not WITH_LWIP */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l01395" name="l01395"></a><span class="lineno"> 1395</span> </div>
<div class="line"><a id="l01396" name="l01396"></a><span class="lineno"> 1396</span><span class="keywordtype">int</span></div>
<div class="foldopen" id="foldopen01397" data-start="{" data-end="}">
<div class="line"><a id="l01397" name="l01397"></a><span class="lineno"><a class="line" href="net_8c.html#a480a3e967feaf00778dedf4c2fc68bd2"> 1397</a></span><a class="code hl_function" href="net_8c.html#a480a3e967feaf00778dedf4c2fc68bd2">coap_remove_from_queue</a>(<a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> **queue, <a class="code hl_struct" href="structcoap__session__t.html">coap_session_t</a> *session, <a class="code hl_typedef" href="pdu_8h.html#ac60fb9284ace878df3db4a2d621d9a8d">coap_tid_t</a> <span class="keywordtype">id</span>, <a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> **node) {</div>
<div class="line"><a id="l01398" name="l01398"></a><span class="lineno"> 1398</span>  <a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> *p, *q;</div>
<div class="line"><a id="l01399" name="l01399"></a><span class="lineno"> 1399</span> </div>
<div class="line"><a id="l01400" name="l01400"></a><span class="lineno"> 1400</span>  <span class="keywordflow">if</span> (!queue || !*queue)</div>
<div class="line"><a id="l01401" name="l01401"></a><span class="lineno"> 1401</span>    <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l01402" name="l01402"></a><span class="lineno"> 1402</span> </div>
<div class="line"><a id="l01403" name="l01403"></a><span class="lineno"> 1403</span>  <span class="comment">/* replace queue head if PDU&#39;s time is less than head&#39;s time */</span></div>
<div class="line"><a id="l01404" name="l01404"></a><span class="lineno"> 1404</span> </div>
<div class="line"><a id="l01405" name="l01405"></a><span class="lineno"> 1405</span>  <span class="keywordflow">if</span> (session == (*queue)-&gt;session &amp;&amp; <span class="keywordtype">id</span> == (*queue)-&gt;id) { <span class="comment">/* found transaction */</span></div>
<div class="line"><a id="l01406" name="l01406"></a><span class="lineno"> 1406</span>    *node = *queue;</div>
<div class="line"><a id="l01407" name="l01407"></a><span class="lineno"> 1407</span>    *queue = (*queue)-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a75428f649543d0779fce28c8538247d6">next</a>;</div>
<div class="line"><a id="l01408" name="l01408"></a><span class="lineno"> 1408</span>    <span class="keywordflow">if</span> (*queue) {          <span class="comment">/* adjust relative time of new queue head */</span></div>
<div class="line"><a id="l01409" name="l01409"></a><span class="lineno"> 1409</span>      (*queue)-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#ab5edd7b3b3ddd98d8356febbd4726e7c">t</a> += (*node)-&gt;t;</div>
<div class="line"><a id="l01410" name="l01410"></a><span class="lineno"> 1410</span>    }</div>
<div class="line"><a id="l01411" name="l01411"></a><span class="lineno"> 1411</span>    (*node)-&gt;next = NULL;</div>
<div class="line"><a id="l01412" name="l01412"></a><span class="lineno"> 1412</span>    <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, <span class="stringliteral">&quot;** %s: tid=%d: removed\n&quot;</span>,</div>
<div class="line"><a id="l01413" name="l01413"></a><span class="lineno"> 1413</span>             <a class="code hl_function" href="group__logging.html#gabf09c67f27059ca278900e7e8fdd475e">coap_session_str</a>(session), <span class="keywordtype">id</span>);</div>
<div class="line"><a id="l01414" name="l01414"></a><span class="lineno"> 1414</span>    <span class="keywordflow">return</span> 1;</div>
<div class="line"><a id="l01415" name="l01415"></a><span class="lineno"> 1415</span>  }</div>
<div class="line"><a id="l01416" name="l01416"></a><span class="lineno"> 1416</span> </div>
<div class="line"><a id="l01417" name="l01417"></a><span class="lineno"> 1417</span>  <span class="comment">/* search transaction to remove (only first occurence will be removed) */</span></div>
<div class="line"><a id="l01418" name="l01418"></a><span class="lineno"> 1418</span>  q = *queue;</div>
<div class="line"><a id="l01419" name="l01419"></a><span class="lineno"> 1419</span>  <span class="keywordflow">do</span> {</div>
<div class="line"><a id="l01420" name="l01420"></a><span class="lineno"> 1420</span>    p = q;</div>
<div class="line"><a id="l01421" name="l01421"></a><span class="lineno"> 1421</span>    q = q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a75428f649543d0779fce28c8538247d6">next</a>;</div>
<div class="line"><a id="l01422" name="l01422"></a><span class="lineno"> 1422</span>  } <span class="keywordflow">while</span> (q &amp;&amp; (session != q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a20ff974763849b7aeaca2cbf6f4b8f70">session</a> || <span class="keywordtype">id</span> != q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#aeded9dd536f54ee47418575711e7dbac">id</a>));</div>
<div class="line"><a id="l01423" name="l01423"></a><span class="lineno"> 1423</span> </div>
<div class="line"><a id="l01424" name="l01424"></a><span class="lineno"> 1424</span>  <span class="keywordflow">if</span> (q) {                        <span class="comment">/* found transaction */</span></div>
<div class="line"><a id="l01425" name="l01425"></a><span class="lineno"> 1425</span>    p-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a75428f649543d0779fce28c8538247d6">next</a> = q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a75428f649543d0779fce28c8538247d6">next</a>;</div>
<div class="line"><a id="l01426" name="l01426"></a><span class="lineno"> 1426</span>    <span class="keywordflow">if</span> (p-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a75428f649543d0779fce28c8538247d6">next</a>) {                <span class="comment">/* must update relative time of p-&gt;next */</span></div>
<div class="line"><a id="l01427" name="l01427"></a><span class="lineno"> 1427</span>      p-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a75428f649543d0779fce28c8538247d6">next</a>-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#ab5edd7b3b3ddd98d8356febbd4726e7c">t</a> += q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#ab5edd7b3b3ddd98d8356febbd4726e7c">t</a>;</div>
<div class="line"><a id="l01428" name="l01428"></a><span class="lineno"> 1428</span>    }</div>
<div class="line"><a id="l01429" name="l01429"></a><span class="lineno"> 1429</span>    q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a75428f649543d0779fce28c8538247d6">next</a> = NULL;</div>
<div class="line"><a id="l01430" name="l01430"></a><span class="lineno"> 1430</span>    *node = q;</div>
<div class="line"><a id="l01431" name="l01431"></a><span class="lineno"> 1431</span>    <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, <span class="stringliteral">&quot;** %s: tid=%d: removed\n&quot;</span>,</div>
<div class="line"><a id="l01432" name="l01432"></a><span class="lineno"> 1432</span>             <a class="code hl_function" href="group__logging.html#gabf09c67f27059ca278900e7e8fdd475e">coap_session_str</a>(session), <span class="keywordtype">id</span>);</div>
<div class="line"><a id="l01433" name="l01433"></a><span class="lineno"> 1433</span>    <span class="keywordflow">return</span> 1;</div>
<div class="line"><a id="l01434" name="l01434"></a><span class="lineno"> 1434</span>  }</div>
<div class="line"><a id="l01435" name="l01435"></a><span class="lineno"> 1435</span> </div>
<div class="line"><a id="l01436" name="l01436"></a><span class="lineno"> 1436</span>  <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l01437" name="l01437"></a><span class="lineno"> 1437</span> </div>
<div class="line"><a id="l01438" name="l01438"></a><span class="lineno"> 1438</span>}</div>
</div>
<div class="line"><a id="l01439" name="l01439"></a><span class="lineno"> 1439</span> </div>
<div class="line"><a id="l01440" name="l01440"></a><span class="lineno"> 1440</span><a class="code hl_define" href="libcoap_8h.html#a58b4446dccd0b8c21b3532ef6b77a57d">COAP_STATIC_INLINE</a> <span class="keywordtype">int</span></div>
<div class="foldopen" id="foldopen01441" data-start="{" data-end="}">
<div class="line"><a id="l01441" name="l01441"></a><span class="lineno"><a class="line" href="net_8c.html#a172ec052726c632427ea990a0ba04c60"> 1441</a></span><a class="code hl_function" href="net_8c.html#a172ec052726c632427ea990a0ba04c60">token_match</a>(<span class="keyword">const</span> <a class="code hl_typedef" href="uthash_8h.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a> *a, <span class="keywordtype">size_t</span> alen,</div>
<div class="line"><a id="l01442" name="l01442"></a><span class="lineno"> 1442</span>  <span class="keyword">const</span> <a class="code hl_typedef" href="uthash_8h.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a> *b, <span class="keywordtype">size_t</span> blen) {</div>
<div class="line"><a id="l01443" name="l01443"></a><span class="lineno"> 1443</span>  <span class="keywordflow">return</span> alen == blen &amp;&amp; (alen == 0 || memcmp(a, b, alen) == 0);</div>
<div class="line"><a id="l01444" name="l01444"></a><span class="lineno"> 1444</span>}</div>
</div>
<div class="line"><a id="l01445" name="l01445"></a><span class="lineno"> 1445</span> </div>
<div class="line"><a id="l01446" name="l01446"></a><span class="lineno"> 1446</span><span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen01447" data-start="{" data-end="}">
<div class="line"><a id="l01447" name="l01447"></a><span class="lineno"><a class="line" href="net_8c.html#add0197ad2daf24535c85e0ba1d28f099"> 1447</a></span><a class="code hl_function" href="net_8c.html#add0197ad2daf24535c85e0ba1d28f099">coap_cancel_session_messages</a>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *context, <a class="code hl_struct" href="structcoap__session__t.html">coap_session_t</a> *session,</div>
<div class="line"><a id="l01448" name="l01448"></a><span class="lineno"> 1448</span>  <a class="code hl_enumeration" href="coap__io_8h.html#a7ff2bb32137ca684be5539c156bdc418">coap_nack_reason_t</a> reason) {</div>
<div class="line"><a id="l01449" name="l01449"></a><span class="lineno"> 1449</span>  <a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> *p, *q;</div>
<div class="line"><a id="l01450" name="l01450"></a><span class="lineno"> 1450</span> </div>
<div class="line"><a id="l01451" name="l01451"></a><span class="lineno"> 1451</span>  <span class="keywordflow">while</span> (context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a> &amp;&amp; context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a>-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a20ff974763849b7aeaca2cbf6f4b8f70">session</a> == session) {</div>
<div class="line"><a id="l01452" name="l01452"></a><span class="lineno"> 1452</span>    q = context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a>;</div>
<div class="line"><a id="l01453" name="l01453"></a><span class="lineno"> 1453</span>    context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a> = q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a75428f649543d0779fce28c8538247d6">next</a>;</div>
<div class="line"><a id="l01454" name="l01454"></a><span class="lineno"> 1454</span>    <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, <span class="stringliteral">&quot;** %s: tid=%d: removed\n&quot;</span>,</div>
<div class="line"><a id="l01455" name="l01455"></a><span class="lineno"> 1455</span>             <a class="code hl_function" href="group__logging.html#gabf09c67f27059ca278900e7e8fdd475e">coap_session_str</a>(session), q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#aeded9dd536f54ee47418575711e7dbac">id</a>);</div>
<div class="line"><a id="l01456" name="l01456"></a><span class="lineno"> 1456</span>    <span class="keywordflow">if</span> (q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a0d5796b82924c69852860053020d0684">type</a> == <a class="code hl_define" href="pdu_8h.html#ab6ad49de4b14e7cf5bd0a2a1a87eef2f">COAP_MESSAGE_CON</a> &amp;&amp; context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a610b7410b2c13c8908590d671243f125">nack_handler</a>)</div>
<div class="line"><a id="l01457" name="l01457"></a><span class="lineno"> 1457</span>      context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a610b7410b2c13c8908590d671243f125">nack_handler</a>(context, session, q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a>, reason, q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#aeded9dd536f54ee47418575711e7dbac">id</a>);</div>
<div class="line"><a id="l01458" name="l01458"></a><span class="lineno"> 1458</span>    <a class="code hl_function" href="net_8c.html#a44c39a2314035989d3e07b9d9328e08c">coap_delete_node</a>(q);</div>
<div class="line"><a id="l01459" name="l01459"></a><span class="lineno"> 1459</span>  }</div>
<div class="line"><a id="l01460" name="l01460"></a><span class="lineno"> 1460</span> </div>
<div class="line"><a id="l01461" name="l01461"></a><span class="lineno"> 1461</span>  <span class="keywordflow">if</span> (!context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a>)</div>
<div class="line"><a id="l01462" name="l01462"></a><span class="lineno"> 1462</span>    <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l01463" name="l01463"></a><span class="lineno"> 1463</span> </div>
<div class="line"><a id="l01464" name="l01464"></a><span class="lineno"> 1464</span>  p = context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a>;</div>
<div class="line"><a id="l01465" name="l01465"></a><span class="lineno"> 1465</span>  q = p-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a75428f649543d0779fce28c8538247d6">next</a>;</div>
<div class="line"><a id="l01466" name="l01466"></a><span class="lineno"> 1466</span> </div>
<div class="line"><a id="l01467" name="l01467"></a><span class="lineno"> 1467</span>  <span class="keywordflow">while</span> (q) {</div>
<div class="line"><a id="l01468" name="l01468"></a><span class="lineno"> 1468</span>    <span class="keywordflow">if</span> (q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a20ff974763849b7aeaca2cbf6f4b8f70">session</a> == session) {</div>
<div class="line"><a id="l01469" name="l01469"></a><span class="lineno"> 1469</span>      p-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a75428f649543d0779fce28c8538247d6">next</a> = q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a75428f649543d0779fce28c8538247d6">next</a>;</div>
<div class="line"><a id="l01470" name="l01470"></a><span class="lineno"> 1470</span>      <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, <span class="stringliteral">&quot;** %s: tid=%d: removed\n&quot;</span>,</div>
<div class="line"><a id="l01471" name="l01471"></a><span class="lineno"> 1471</span>               <a class="code hl_function" href="group__logging.html#gabf09c67f27059ca278900e7e8fdd475e">coap_session_str</a>(session), q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#aeded9dd536f54ee47418575711e7dbac">id</a>);</div>
<div class="line"><a id="l01472" name="l01472"></a><span class="lineno"> 1472</span>      <span class="keywordflow">if</span> (q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a0d5796b82924c69852860053020d0684">type</a> == <a class="code hl_define" href="pdu_8h.html#ab6ad49de4b14e7cf5bd0a2a1a87eef2f">COAP_MESSAGE_CON</a> &amp;&amp; context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a610b7410b2c13c8908590d671243f125">nack_handler</a>)</div>
<div class="line"><a id="l01473" name="l01473"></a><span class="lineno"> 1473</span>        context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a610b7410b2c13c8908590d671243f125">nack_handler</a>(context, session, q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a>, reason, q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#aeded9dd536f54ee47418575711e7dbac">id</a>);</div>
<div class="line"><a id="l01474" name="l01474"></a><span class="lineno"> 1474</span>      <a class="code hl_function" href="net_8c.html#a44c39a2314035989d3e07b9d9328e08c">coap_delete_node</a>(q);</div>
<div class="line"><a id="l01475" name="l01475"></a><span class="lineno"> 1475</span>      q = p-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a75428f649543d0779fce28c8538247d6">next</a>;</div>
<div class="line"><a id="l01476" name="l01476"></a><span class="lineno"> 1476</span>    } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l01477" name="l01477"></a><span class="lineno"> 1477</span>      p = q;</div>
<div class="line"><a id="l01478" name="l01478"></a><span class="lineno"> 1478</span>      q = q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a75428f649543d0779fce28c8538247d6">next</a>;</div>
<div class="line"><a id="l01479" name="l01479"></a><span class="lineno"> 1479</span>    }</div>
<div class="line"><a id="l01480" name="l01480"></a><span class="lineno"> 1480</span>  }</div>
<div class="line"><a id="l01481" name="l01481"></a><span class="lineno"> 1481</span>}</div>
</div>
<div class="line"><a id="l01482" name="l01482"></a><span class="lineno"> 1482</span> </div>
<div class="line"><a id="l01483" name="l01483"></a><span class="lineno"> 1483</span><span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen01484" data-start="{" data-end="}">
<div class="line"><a id="l01484" name="l01484"></a><span class="lineno"><a class="line" href="net_8c.html#ab0ffe6312ad95fb07b0212f912cf196c"> 1484</a></span><a class="code hl_function" href="net_8c.html#ab0ffe6312ad95fb07b0212f912cf196c">coap_cancel_all_messages</a>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *context, <a class="code hl_struct" href="structcoap__session__t.html">coap_session_t</a> *session,</div>
<div class="line"><a id="l01485" name="l01485"></a><span class="lineno"> 1485</span>  <span class="keyword">const</span> <a class="code hl_typedef" href="uthash_8h.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a> *token, <span class="keywordtype">size_t</span> token_length) {</div>
<div class="line"><a id="l01486" name="l01486"></a><span class="lineno"> 1486</span>  <span class="comment">/* cancel all messages in sendqueue that belong to session</span></div>
<div class="line"><a id="l01487" name="l01487"></a><span class="lineno"> 1487</span><span class="comment">   * and use the specified token */</span></div>
<div class="line"><a id="l01488" name="l01488"></a><span class="lineno"> 1488</span>  <a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> *p, *q;</div>
<div class="line"><a id="l01489" name="l01489"></a><span class="lineno"> 1489</span> </div>
<div class="line"><a id="l01490" name="l01490"></a><span class="lineno"> 1490</span>  <span class="keywordflow">while</span> (context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a> &amp;&amp; context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a>-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a20ff974763849b7aeaca2cbf6f4b8f70">session</a> == session &amp;&amp;</div>
<div class="line"><a id="l01491" name="l01491"></a><span class="lineno"> 1491</span>    <a class="code hl_function" href="net_8c.html#a172ec052726c632427ea990a0ba04c60">token_match</a>(token, token_length,</div>
<div class="line"><a id="l01492" name="l01492"></a><span class="lineno"> 1492</span>      context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a>-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a3c42c790abb815d722fbebcd7702a200">token</a>,</div>
<div class="line"><a id="l01493" name="l01493"></a><span class="lineno"> 1493</span>      context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a>-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a8c05f6d455ff81d7751ddb61233a455b">token_length</a>)) {</div>
<div class="line"><a id="l01494" name="l01494"></a><span class="lineno"> 1494</span>    q = context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a>;</div>
<div class="line"><a id="l01495" name="l01495"></a><span class="lineno"> 1495</span>    context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a> = q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a75428f649543d0779fce28c8538247d6">next</a>;</div>
<div class="line"><a id="l01496" name="l01496"></a><span class="lineno"> 1496</span>    <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, <span class="stringliteral">&quot;** %s: tid=%d: removed\n&quot;</span>,</div>
<div class="line"><a id="l01497" name="l01497"></a><span class="lineno"> 1497</span>             <a class="code hl_function" href="group__logging.html#gabf09c67f27059ca278900e7e8fdd475e">coap_session_str</a>(session), q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#aeded9dd536f54ee47418575711e7dbac">id</a>);</div>
<div class="line"><a id="l01498" name="l01498"></a><span class="lineno"> 1498</span>    <a class="code hl_function" href="net_8c.html#a44c39a2314035989d3e07b9d9328e08c">coap_delete_node</a>(q);</div>
<div class="line"><a id="l01499" name="l01499"></a><span class="lineno"> 1499</span>  }</div>
<div class="line"><a id="l01500" name="l01500"></a><span class="lineno"> 1500</span> </div>
<div class="line"><a id="l01501" name="l01501"></a><span class="lineno"> 1501</span>  <span class="keywordflow">if</span> (!context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a>)</div>
<div class="line"><a id="l01502" name="l01502"></a><span class="lineno"> 1502</span>    <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l01503" name="l01503"></a><span class="lineno"> 1503</span> </div>
<div class="line"><a id="l01504" name="l01504"></a><span class="lineno"> 1504</span>  p = context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a>;</div>
<div class="line"><a id="l01505" name="l01505"></a><span class="lineno"> 1505</span>  q = p-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a75428f649543d0779fce28c8538247d6">next</a>;</div>
<div class="line"><a id="l01506" name="l01506"></a><span class="lineno"> 1506</span> </div>
<div class="line"><a id="l01507" name="l01507"></a><span class="lineno"> 1507</span>  <span class="comment">/* when q is not NULL, it does not match (dst, token), so we can skip it */</span></div>
<div class="line"><a id="l01508" name="l01508"></a><span class="lineno"> 1508</span>  <span class="keywordflow">while</span> (q) {</div>
<div class="line"><a id="l01509" name="l01509"></a><span class="lineno"> 1509</span>    <span class="keywordflow">if</span> (q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a20ff974763849b7aeaca2cbf6f4b8f70">session</a> == session &amp;&amp;</div>
<div class="line"><a id="l01510" name="l01510"></a><span class="lineno"> 1510</span>      <a class="code hl_function" href="net_8c.html#a172ec052726c632427ea990a0ba04c60">token_match</a>(token, token_length,</div>
<div class="line"><a id="l01511" name="l01511"></a><span class="lineno"> 1511</span>        q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a3c42c790abb815d722fbebcd7702a200">token</a>, q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a8c05f6d455ff81d7751ddb61233a455b">token_length</a>)) {</div>
<div class="line"><a id="l01512" name="l01512"></a><span class="lineno"> 1512</span>      p-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a75428f649543d0779fce28c8538247d6">next</a> = q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a75428f649543d0779fce28c8538247d6">next</a>;</div>
<div class="line"><a id="l01513" name="l01513"></a><span class="lineno"> 1513</span>      <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, <span class="stringliteral">&quot;** %s: tid=%d: removed\n&quot;</span>,</div>
<div class="line"><a id="l01514" name="l01514"></a><span class="lineno"> 1514</span>               <a class="code hl_function" href="group__logging.html#gabf09c67f27059ca278900e7e8fdd475e">coap_session_str</a>(session), q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#aeded9dd536f54ee47418575711e7dbac">id</a>);</div>
<div class="line"><a id="l01515" name="l01515"></a><span class="lineno"> 1515</span>      <a class="code hl_function" href="net_8c.html#a44c39a2314035989d3e07b9d9328e08c">coap_delete_node</a>(q);</div>
<div class="line"><a id="l01516" name="l01516"></a><span class="lineno"> 1516</span>      q = p-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a75428f649543d0779fce28c8538247d6">next</a>;</div>
<div class="line"><a id="l01517" name="l01517"></a><span class="lineno"> 1517</span>    } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l01518" name="l01518"></a><span class="lineno"> 1518</span>      p = q;</div>
<div class="line"><a id="l01519" name="l01519"></a><span class="lineno"> 1519</span>      q = q-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a75428f649543d0779fce28c8538247d6">next</a>;</div>
<div class="line"><a id="l01520" name="l01520"></a><span class="lineno"> 1520</span>    }</div>
<div class="line"><a id="l01521" name="l01521"></a><span class="lineno"> 1521</span>  }</div>
<div class="line"><a id="l01522" name="l01522"></a><span class="lineno"> 1522</span>}</div>
</div>
<div class="line"><a id="l01523" name="l01523"></a><span class="lineno"> 1523</span> </div>
<div class="line"><a id="l01524" name="l01524"></a><span class="lineno"> 1524</span><a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> *</div>
<div class="foldopen" id="foldopen01525" data-start="{" data-end="}">
<div class="line"><a id="l01525" name="l01525"></a><span class="lineno"><a class="line" href="net_8c.html#a3065434dae5c177558462dddc61d5514"> 1525</a></span><a class="code hl_function" href="net_8c.html#a3065434dae5c177558462dddc61d5514">coap_find_transaction</a>(<a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> *queue, <a class="code hl_struct" href="structcoap__session__t.html">coap_session_t</a> *session, <a class="code hl_typedef" href="pdu_8h.html#ac60fb9284ace878df3db4a2d621d9a8d">coap_tid_t</a> <span class="keywordtype">id</span>) {</div>
<div class="line"><a id="l01526" name="l01526"></a><span class="lineno"> 1526</span>  <span class="keywordflow">while</span> (queue &amp;&amp; queue-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a20ff974763849b7aeaca2cbf6f4b8f70">session</a> != session &amp;&amp; queue-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#aeded9dd536f54ee47418575711e7dbac">id</a> != <span class="keywordtype">id</span>)</div>
<div class="line"><a id="l01527" name="l01527"></a><span class="lineno"> 1527</span>    queue = queue-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a75428f649543d0779fce28c8538247d6">next</a>;</div>
<div class="line"><a id="l01528" name="l01528"></a><span class="lineno"> 1528</span> </div>
<div class="line"><a id="l01529" name="l01529"></a><span class="lineno"> 1529</span>  <span class="keywordflow">return</span> queue;</div>
<div class="line"><a id="l01530" name="l01530"></a><span class="lineno"> 1530</span>}</div>
</div>
<div class="line"><a id="l01531" name="l01531"></a><span class="lineno"> 1531</span> </div>
<div class="line"><a id="l01532" name="l01532"></a><span class="lineno"> 1532</span><a class="code hl_struct" href="structcoap__pdu__t.html">coap_pdu_t</a> *</div>
<div class="foldopen" id="foldopen01533" data-start="{" data-end="}">
<div class="line"><a id="l01533" name="l01533"></a><span class="lineno"><a class="line" href="net_8c.html#aa54bb684429ee455f119fc5fb1feb197"> 1533</a></span><a class="code hl_function" href="net_8c.html#aa54bb684429ee455f119fc5fb1feb197">coap_new_error_response</a>(<a class="code hl_struct" href="structcoap__pdu__t.html">coap_pdu_t</a> *request, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> code,</div>
<div class="line"><a id="l01534" name="l01534"></a><span class="lineno"> 1534</span>  <a class="code hl_typedef" href="group__opt__filter.html#ga001c5b06ae9e02996509516871cb69a8">coap_opt_filter_t</a> opts) {</div>
<div class="line"><a id="l01535" name="l01535"></a><span class="lineno"> 1535</span>  <a class="code hl_struct" href="structcoap__opt__iterator__t.html">coap_opt_iterator_t</a> opt_iter;</div>
<div class="line"><a id="l01536" name="l01536"></a><span class="lineno"> 1536</span>  <a class="code hl_struct" href="structcoap__pdu__t.html">coap_pdu_t</a> *response;</div>
<div class="line"><a id="l01537" name="l01537"></a><span class="lineno"> 1537</span>  <span class="keywordtype">size_t</span> size = request-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a8c05f6d455ff81d7751ddb61233a455b">token_length</a>;</div>
<div class="line"><a id="l01538" name="l01538"></a><span class="lineno"> 1538</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> type;</div>
<div class="line"><a id="l01539" name="l01539"></a><span class="lineno"> 1539</span>  <a class="code hl_typedef" href="option_8h.html#a963ad4994625360a5ac70d9df2ab5412">coap_opt_t</a> *option;</div>
<div class="line"><a id="l01540" name="l01540"></a><span class="lineno"> 1540</span>  uint16_t opt_type = 0;        <span class="comment">/* used for calculating delta-storage */</span></div>
<div class="line"><a id="l01541" name="l01541"></a><span class="lineno"> 1541</span> </div>
<div class="line"><a id="l01542" name="l01542"></a><span class="lineno"> 1542</span><span class="preprocessor">#if COAP_ERROR_PHRASE_LENGTH &gt; 0</span></div>
<div class="line"><a id="l01543" name="l01543"></a><span class="lineno"> 1543</span>  <span class="keyword">const</span> <span class="keywordtype">char</span> *phrase = <a class="code hl_function" href="pdu_8c.html#a0820d2413f167cd92f8267bf0aaa6ecb">coap_response_phrase</a>(code);</div>
<div class="line"><a id="l01544" name="l01544"></a><span class="lineno"> 1544</span> </div>
<div class="line"><a id="l01545" name="l01545"></a><span class="lineno"> 1545</span>  <span class="comment">/* Need some more space for the error phrase and payload start marker */</span></div>
<div class="line"><a id="l01546" name="l01546"></a><span class="lineno"> 1546</span>  <span class="keywordflow">if</span> (phrase)</div>
<div class="line"><a id="l01547" name="l01547"></a><span class="lineno"> 1547</span>    size += strlen(phrase) + 1;</div>
<div class="line"><a id="l01548" name="l01548"></a><span class="lineno"> 1548</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l01549" name="l01549"></a><span class="lineno"> 1549</span> </div>
<div class="line"><a id="l01550" name="l01550"></a><span class="lineno"> 1550</span>  <a class="code hl_define" href="mem_8c.html#a3d4ae9c092e117c836f52dc7d7cee574">assert</a>(request);</div>
<div class="line"><a id="l01551" name="l01551"></a><span class="lineno"> 1551</span> </div>
<div class="line"><a id="l01552" name="l01552"></a><span class="lineno"> 1552</span>  <span class="comment">/* cannot send ACK if original request was not confirmable */</span></div>
<div class="line"><a id="l01553" name="l01553"></a><span class="lineno"> 1553</span>  type = request-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a0d5796b82924c69852860053020d0684">type</a> == <a class="code hl_define" href="pdu_8h.html#ab6ad49de4b14e7cf5bd0a2a1a87eef2f">COAP_MESSAGE_CON</a></div>
<div class="line"><a id="l01554" name="l01554"></a><span class="lineno"> 1554</span>    ? <a class="code hl_define" href="pdu_8h.html#ab2a2b75edf2611bc01464bb182e4d781">COAP_MESSAGE_ACK</a></div>
<div class="line"><a id="l01555" name="l01555"></a><span class="lineno"> 1555</span>    : <a class="code hl_define" href="pdu_8h.html#a8d16c2a7f279b2b6517b38d58347dead">COAP_MESSAGE_NON</a>;</div>
<div class="line"><a id="l01556" name="l01556"></a><span class="lineno"> 1556</span> </div>
<div class="line"><a id="l01557" name="l01557"></a><span class="lineno"> 1557</span>  <span class="comment">/* Estimate how much space we need for options to copy from</span></div>
<div class="line"><a id="l01558" name="l01558"></a><span class="lineno"> 1558</span><span class="comment">   * request. We always need the Token, for 4.02 the unknown critical</span></div>
<div class="line"><a id="l01559" name="l01559"></a><span class="lineno"> 1559</span><span class="comment">   * options must be included as well. */</span></div>
<div class="line"><a id="l01560" name="l01560"></a><span class="lineno"> 1560</span>  <a class="code hl_function" href="group__opt__filter.html#gae505a1c44aa1f5aa01531deaff245e5b">coap_option_clrb</a>(opts, <a class="code hl_define" href="pdu_8h.html#a99007567c62f8f31404111b7bb888c6e">COAP_OPTION_CONTENT_TYPE</a>); <span class="comment">/* we do not want this */</span></div>
<div class="line"><a id="l01561" name="l01561"></a><span class="lineno"> 1561</span> </div>
<div class="line"><a id="l01562" name="l01562"></a><span class="lineno"> 1562</span>  <a class="code hl_function" href="group__opt__filter.html#gaa76930050882387b0f5c7d0246e14440">coap_option_iterator_init</a>(request, &amp;opt_iter, opts);</div>
<div class="line"><a id="l01563" name="l01563"></a><span class="lineno"> 1563</span> </div>
<div class="line"><a id="l01564" name="l01564"></a><span class="lineno"> 1564</span>  <span class="comment">/* Add size of each unknown critical option. As known critical</span></div>
<div class="line"><a id="l01565" name="l01565"></a><span class="lineno"> 1565</span><span class="comment">     options as well as elective options are not copied, the delta</span></div>
<div class="line"><a id="l01566" name="l01566"></a><span class="lineno"> 1566</span><span class="comment">     value might grow.</span></div>
<div class="line"><a id="l01567" name="l01567"></a><span class="lineno"> 1567</span><span class="comment">   */</span></div>
<div class="line"><a id="l01568" name="l01568"></a><span class="lineno"> 1568</span>  <span class="keywordflow">while</span> ((option = <a class="code hl_function" href="group__opt__filter.html#ga19d4dbbc03ef362996964fbfdd1d4c7b">coap_option_next</a>(&amp;opt_iter))) {</div>
<div class="line"><a id="l01569" name="l01569"></a><span class="lineno"> 1569</span>    uint16_t delta = opt_iter.<a class="code hl_variable" href="structcoap__opt__iterator__t.html#a0df30f4a2bb85deb3d493fded6967b9d">type</a> - opt_type;</div>
<div class="line"><a id="l01570" name="l01570"></a><span class="lineno"> 1570</span>    <span class="comment">/* calculate space required to encode (opt_iter.type - opt_type) */</span></div>
<div class="line"><a id="l01571" name="l01571"></a><span class="lineno"> 1571</span>    <span class="keywordflow">if</span> (delta &lt; 13) {</div>
<div class="line"><a id="l01572" name="l01572"></a><span class="lineno"> 1572</span>      size++;</div>
<div class="line"><a id="l01573" name="l01573"></a><span class="lineno"> 1573</span>    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (delta &lt; 269) {</div>
<div class="line"><a id="l01574" name="l01574"></a><span class="lineno"> 1574</span>      size += 2;</div>
<div class="line"><a id="l01575" name="l01575"></a><span class="lineno"> 1575</span>    } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l01576" name="l01576"></a><span class="lineno"> 1576</span>      size += 3;</div>
<div class="line"><a id="l01577" name="l01577"></a><span class="lineno"> 1577</span>    }</div>
<div class="line"><a id="l01578" name="l01578"></a><span class="lineno"> 1578</span> </div>
<div class="line"><a id="l01579" name="l01579"></a><span class="lineno"> 1579</span>    <span class="comment">/* add coap_opt_length(option) and the number of additional bytes</span></div>
<div class="line"><a id="l01580" name="l01580"></a><span class="lineno"> 1580</span><span class="comment">     * required to encode the option length */</span></div>
<div class="line"><a id="l01581" name="l01581"></a><span class="lineno"> 1581</span> </div>
<div class="line"><a id="l01582" name="l01582"></a><span class="lineno"> 1582</span>    size += <a class="code hl_function" href="group__opt__filter.html#gaac65919c93f7047b687d33af9672b3ea">coap_opt_length</a>(option);</div>
<div class="line"><a id="l01583" name="l01583"></a><span class="lineno"> 1583</span>    <span class="keywordflow">switch</span> (*option &amp; 0x0f) {</div>
<div class="line"><a id="l01584" name="l01584"></a><span class="lineno"> 1584</span>    <span class="keywordflow">case</span> 0x0e:</div>
<div class="line"><a id="l01585" name="l01585"></a><span class="lineno"> 1585</span>      size++;</div>
<div class="line"><a id="l01586" name="l01586"></a><span class="lineno"> 1586</span>      <span class="comment">/* fall through */</span></div>
<div class="line"><a id="l01587" name="l01587"></a><span class="lineno"> 1587</span>    <span class="keywordflow">case</span> 0x0d:</div>
<div class="line"><a id="l01588" name="l01588"></a><span class="lineno"> 1588</span>      size++;</div>
<div class="line"><a id="l01589" name="l01589"></a><span class="lineno"> 1589</span>      <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l01590" name="l01590"></a><span class="lineno"> 1590</span>    <span class="keywordflow">default</span>:</div>
<div class="line"><a id="l01591" name="l01591"></a><span class="lineno"> 1591</span>      ;</div>
<div class="line"><a id="l01592" name="l01592"></a><span class="lineno"> 1592</span>    }</div>
<div class="line"><a id="l01593" name="l01593"></a><span class="lineno"> 1593</span> </div>
<div class="line"><a id="l01594" name="l01594"></a><span class="lineno"> 1594</span>    opt_type = opt_iter.<a class="code hl_variable" href="structcoap__opt__iterator__t.html#a0df30f4a2bb85deb3d493fded6967b9d">type</a>;</div>
<div class="line"><a id="l01595" name="l01595"></a><span class="lineno"> 1595</span>  }</div>
<div class="line"><a id="l01596" name="l01596"></a><span class="lineno"> 1596</span> </div>
<div class="line"><a id="l01597" name="l01597"></a><span class="lineno"> 1597</span>  <span class="comment">/* Now create the response and fill with options and payload data. */</span></div>
<div class="line"><a id="l01598" name="l01598"></a><span class="lineno"> 1598</span>  response = <a class="code hl_function" href="pdu_8c.html#a4f019ad11b0f633524175488aecbd7d1">coap_pdu_init</a>(type, code, request-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a65877a685b1f3428d3dc872af075ddc1">tid</a>, size);</div>
<div class="line"><a id="l01599" name="l01599"></a><span class="lineno"> 1599</span>  <span class="keywordflow">if</span> (response) {</div>
<div class="line"><a id="l01600" name="l01600"></a><span class="lineno"> 1600</span>    <span class="comment">/* copy token */</span></div>
<div class="line"><a id="l01601" name="l01601"></a><span class="lineno"> 1601</span>    <span class="keywordflow">if</span> (!<a class="code hl_function" href="pdu_8c.html#a923f81168ccbbaac1a4ca50837d7be94">coap_add_token</a>(response, request-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a8c05f6d455ff81d7751ddb61233a455b">token_length</a>,</div>
<div class="line"><a id="l01602" name="l01602"></a><span class="lineno"> 1602</span>      request-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a3c42c790abb815d722fbebcd7702a200">token</a>)) {</div>
<div class="line"><a id="l01603" name="l01603"></a><span class="lineno"> 1603</span>      <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, <span class="stringliteral">&quot;cannot add token to error response\n&quot;</span>);</div>
<div class="line"><a id="l01604" name="l01604"></a><span class="lineno"> 1604</span>      <a class="code hl_function" href="pdu_8c.html#a48581f968a30ef4278702eb1c16b7a90">coap_delete_pdu</a>(response);</div>
<div class="line"><a id="l01605" name="l01605"></a><span class="lineno"> 1605</span>      <span class="keywordflow">return</span> NULL;</div>
<div class="line"><a id="l01606" name="l01606"></a><span class="lineno"> 1606</span>    }</div>
<div class="line"><a id="l01607" name="l01607"></a><span class="lineno"> 1607</span> </div>
<div class="line"><a id="l01608" name="l01608"></a><span class="lineno"> 1608</span>    <span class="comment">/* copy all options */</span></div>
<div class="line"><a id="l01609" name="l01609"></a><span class="lineno"> 1609</span>    <a class="code hl_function" href="group__opt__filter.html#gaa76930050882387b0f5c7d0246e14440">coap_option_iterator_init</a>(request, &amp;opt_iter, opts);</div>
<div class="line"><a id="l01610" name="l01610"></a><span class="lineno"> 1610</span>    <span class="keywordflow">while</span> ((option = <a class="code hl_function" href="group__opt__filter.html#ga19d4dbbc03ef362996964fbfdd1d4c7b">coap_option_next</a>(&amp;opt_iter))) {</div>
<div class="line"><a id="l01611" name="l01611"></a><span class="lineno"> 1611</span>      <a class="code hl_function" href="pdu_8c.html#aa1314f60fbc25733cfabaa975adc5aae">coap_add_option</a>(response, opt_iter.<a class="code hl_variable" href="structcoap__opt__iterator__t.html#a0df30f4a2bb85deb3d493fded6967b9d">type</a>,</div>
<div class="line"><a id="l01612" name="l01612"></a><span class="lineno"> 1612</span>        <a class="code hl_function" href="group__opt__filter.html#gaac65919c93f7047b687d33af9672b3ea">coap_opt_length</a>(option),</div>
<div class="line"><a id="l01613" name="l01613"></a><span class="lineno"> 1613</span>        <a class="code hl_function" href="group__opt__filter.html#gaec4e944d39722779cac610ed22ee09db">coap_opt_value</a>(option));</div>
<div class="line"><a id="l01614" name="l01614"></a><span class="lineno"> 1614</span>    }</div>
<div class="line"><a id="l01615" name="l01615"></a><span class="lineno"> 1615</span> </div>
<div class="line"><a id="l01616" name="l01616"></a><span class="lineno"> 1616</span><span class="preprocessor">#if COAP_ERROR_PHRASE_LENGTH &gt; 0</span></div>
<div class="line"><a id="l01617" name="l01617"></a><span class="lineno"> 1617</span>    <span class="comment">/* note that diagnostic messages do not need a Content-Format option. */</span></div>
<div class="line"><a id="l01618" name="l01618"></a><span class="lineno"> 1618</span>    <span class="keywordflow">if</span> (phrase)</div>
<div class="line"><a id="l01619" name="l01619"></a><span class="lineno"> 1619</span>      <a class="code hl_function" href="pdu_8c.html#af71a3f810ab9f0f657c25c425826af40">coap_add_data</a>(response, (<span class="keywordtype">size_t</span>)strlen(phrase), (<span class="keyword">const</span> <a class="code hl_typedef" href="uthash_8h.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a> *)phrase);</div>
<div class="line"><a id="l01620" name="l01620"></a><span class="lineno"> 1620</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l01621" name="l01621"></a><span class="lineno"> 1621</span>  }</div>
<div class="line"><a id="l01622" name="l01622"></a><span class="lineno"> 1622</span> </div>
<div class="line"><a id="l01623" name="l01623"></a><span class="lineno"> 1623</span>  <span class="keywordflow">return</span> response;</div>
<div class="line"><a id="l01624" name="l01624"></a><span class="lineno"> 1624</span>}</div>
</div>
<div class="line"><a id="l01625" name="l01625"></a><span class="lineno"> 1625</span> </div>
<div class="line"><a id="l01630" name="l01630"></a><span class="lineno"> 1630</span><a class="code hl_define" href="libcoap_8h.html#a58b4446dccd0b8c21b3532ef6b77a57d">COAP_STATIC_INLINE</a> <span class="keywordtype">size_t</span></div>
<div class="foldopen" id="foldopen01631" data-start="{" data-end="}">
<div class="line"><a id="l01631" name="l01631"></a><span class="lineno"><a class="line" href="net_8c.html#a4dc6e755dca2ca804e8700f398f4c329"> 1631</a></span><a class="code hl_function" href="net_8c.html#a4dc6e755dca2ca804e8700f398f4c329">get_wkc_len</a>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *context, <a class="code hl_typedef" href="option_8h.html#a963ad4994625360a5ac70d9df2ab5412">coap_opt_t</a> *query_filter) {</div>
<div class="line"><a id="l01632" name="l01632"></a><span class="lineno"> 1632</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> buf[1];</div>
<div class="line"><a id="l01633" name="l01633"></a><span class="lineno"> 1633</span>  <span class="keywordtype">size_t</span> len = 0;</div>
<div class="line"><a id="l01634" name="l01634"></a><span class="lineno"> 1634</span> </div>
<div class="line"><a id="l01635" name="l01635"></a><span class="lineno"> 1635</span>  <span class="keywordflow">if</span> (<a class="code hl_function" href="resource_8c.html#a82195178fe216a47a0cf8a88aa09c9cd">coap_print_wellknown</a>(context, buf, &amp;len, UINT_MAX, query_filter)</div>
<div class="line"><a id="l01636" name="l01636"></a><span class="lineno"> 1636</span>    &amp; <a class="code hl_define" href="resource_8h.html#abba955fb8180d86085c2f0680626cfe8">COAP_PRINT_STATUS_ERROR</a>) {</div>
<div class="line"><a id="l01637" name="l01637"></a><span class="lineno"> 1637</span>    <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446a8f6fe15bfe15104da6d1b360194a5400">LOG_WARNING</a>, <span class="stringliteral">&quot;cannot determine length of /.well-known/core\n&quot;</span>);</div>
<div class="line"><a id="l01638" name="l01638"></a><span class="lineno"> 1638</span>    <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l01639" name="l01639"></a><span class="lineno"> 1639</span>  }</div>
<div class="line"><a id="l01640" name="l01640"></a><span class="lineno"> 1640</span> </div>
<div class="line"><a id="l01641" name="l01641"></a><span class="lineno"> 1641</span>  <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, <span class="stringliteral">&quot;get_wkc_len: coap_print_wellknown() returned %zu\n&quot;</span>, len);</div>
<div class="line"><a id="l01642" name="l01642"></a><span class="lineno"> 1642</span> </div>
<div class="line"><a id="l01643" name="l01643"></a><span class="lineno"> 1643</span>  <span class="keywordflow">return</span> len;</div>
<div class="line"><a id="l01644" name="l01644"></a><span class="lineno"> 1644</span>}</div>
</div>
<div class="line"><a id="l01645" name="l01645"></a><span class="lineno"> 1645</span> </div>
<div class="line"><a id="l01646" name="l01646"></a><span class="lineno"><a class="line" href="net_8c.html#a641a52ad5cdf4da5859aa7fc0e5fdf95"> 1646</a></span><span class="preprocessor">#define SZX_TO_BYTES(SZX) ((size_t)(1 &lt;&lt; ((SZX) + 4)))</span></div>
<div class="line"><a id="l01647" name="l01647"></a><span class="lineno"> 1647</span> </div>
<div class="line"><a id="l01648" name="l01648"></a><span class="lineno"> 1648</span><a class="code hl_struct" href="structcoap__pdu__t.html">coap_pdu_t</a> *</div>
<div class="foldopen" id="foldopen01649" data-start="{" data-end="}">
<div class="line"><a id="l01649" name="l01649"></a><span class="lineno"><a class="line" href="net_8c.html#a4b9a31728201d9c7c032513a185854ff"> 1649</a></span><a class="code hl_function" href="net_8c.html#a4b9a31728201d9c7c032513a185854ff">coap_wellknown_response</a>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *context, <a class="code hl_struct" href="structcoap__session__t.html">coap_session_t</a> *session,</div>
<div class="line"><a id="l01650" name="l01650"></a><span class="lineno"> 1650</span>  <a class="code hl_struct" href="structcoap__pdu__t.html">coap_pdu_t</a> *request) {</div>
<div class="line"><a id="l01651" name="l01651"></a><span class="lineno"> 1651</span>  <a class="code hl_struct" href="structcoap__pdu__t.html">coap_pdu_t</a> *resp;</div>
<div class="line"><a id="l01652" name="l01652"></a><span class="lineno"> 1652</span>  <a class="code hl_struct" href="structcoap__opt__iterator__t.html">coap_opt_iterator_t</a> opt_iter;</div>
<div class="line"><a id="l01653" name="l01653"></a><span class="lineno"> 1653</span>  <span class="keywordtype">size_t</span> len, wkc_len;</div>
<div class="line"><a id="l01654" name="l01654"></a><span class="lineno"> 1654</span>  <a class="code hl_typedef" href="uthash_8h.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a> buf[2];</div>
<div class="line"><a id="l01655" name="l01655"></a><span class="lineno"> 1655</span>  <span class="keywordtype">int</span> result = 0;</div>
<div class="line"><a id="l01656" name="l01656"></a><span class="lineno"> 1656</span>  <span class="keywordtype">int</span> need_block2 = 0;           <span class="comment">/* set to 1 if Block2 option is required */</span></div>
<div class="line"><a id="l01657" name="l01657"></a><span class="lineno"> 1657</span>  <a class="code hl_struct" href="structcoap__block__t.html">coap_block_t</a> block;</div>
<div class="line"><a id="l01658" name="l01658"></a><span class="lineno"> 1658</span>  <a class="code hl_typedef" href="option_8h.html#a963ad4994625360a5ac70d9df2ab5412">coap_opt_t</a> *query_filter;</div>
<div class="line"><a id="l01659" name="l01659"></a><span class="lineno"> 1659</span>  <span class="keywordtype">size_t</span> offset = 0;</div>
<div class="line"><a id="l01660" name="l01660"></a><span class="lineno"> 1660</span>  <a class="code hl_typedef" href="uthash_8h.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a> *data;</div>
<div class="line"><a id="l01661" name="l01661"></a><span class="lineno"> 1661</span> </div>
<div class="line"><a id="l01662" name="l01662"></a><span class="lineno"> 1662</span>  resp = <a class="code hl_function" href="pdu_8c.html#a4f019ad11b0f633524175488aecbd7d1">coap_pdu_init</a>(request-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a0d5796b82924c69852860053020d0684">type</a> == <a class="code hl_define" href="pdu_8h.html#ab6ad49de4b14e7cf5bd0a2a1a87eef2f">COAP_MESSAGE_CON</a></div>
<div class="line"><a id="l01663" name="l01663"></a><span class="lineno"> 1663</span>    ? <a class="code hl_define" href="pdu_8h.html#ab2a2b75edf2611bc01464bb182e4d781">COAP_MESSAGE_ACK</a></div>
<div class="line"><a id="l01664" name="l01664"></a><span class="lineno"> 1664</span>    : <a class="code hl_define" href="pdu_8h.html#a8d16c2a7f279b2b6517b38d58347dead">COAP_MESSAGE_NON</a>,</div>
<div class="line"><a id="l01665" name="l01665"></a><span class="lineno"> 1665</span>    <a class="code hl_define" href="pdu_8h.html#a651de743c1ff3168c875820cf327b1d6">COAP_RESPONSE_CODE</a>(205),</div>
<div class="line"><a id="l01666" name="l01666"></a><span class="lineno"> 1666</span>    request-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a65877a685b1f3428d3dc872af075ddc1">tid</a>, <a class="code hl_function" href="coap__session_8c.html#a4368ee622c681bf7cf0b7cfe99c8ab37">coap_session_max_pdu_size</a>(session));</div>
<div class="line"><a id="l01667" name="l01667"></a><span class="lineno"> 1667</span>  <span class="keywordflow">if</span> (!resp) {</div>
<div class="line"><a id="l01668" name="l01668"></a><span class="lineno"> 1668</span>    <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, <span class="stringliteral">&quot;coap_wellknown_response: cannot create PDU\n&quot;</span>);</div>
<div class="line"><a id="l01669" name="l01669"></a><span class="lineno"> 1669</span>    <span class="keywordflow">return</span> NULL;</div>
<div class="line"><a id="l01670" name="l01670"></a><span class="lineno"> 1670</span>  }</div>
<div class="line"><a id="l01671" name="l01671"></a><span class="lineno"> 1671</span> </div>
<div class="line"><a id="l01672" name="l01672"></a><span class="lineno"> 1672</span>  <span class="keywordflow">if</span> (!<a class="code hl_function" href="pdu_8c.html#a923f81168ccbbaac1a4ca50837d7be94">coap_add_token</a>(resp, request-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a8c05f6d455ff81d7751ddb61233a455b">token_length</a>, request-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a3c42c790abb815d722fbebcd7702a200">token</a>)) {</div>
<div class="line"><a id="l01673" name="l01673"></a><span class="lineno"> 1673</span>    <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, <span class="stringliteral">&quot;coap_wellknown_response: cannot add token\n&quot;</span>);</div>
<div class="line"><a id="l01674" name="l01674"></a><span class="lineno"> 1674</span>    <span class="keywordflow">goto</span> error;</div>
<div class="line"><a id="l01675" name="l01675"></a><span class="lineno"> 1675</span>  }</div>
<div class="line"><a id="l01676" name="l01676"></a><span class="lineno"> 1676</span> </div>
<div class="line"><a id="l01677" name="l01677"></a><span class="lineno"> 1677</span>  query_filter = <a class="code hl_function" href="group__opt__filter.html#ga35c348f1ce988e6788930a710f4535c9">coap_check_option</a>(request, <a class="code hl_define" href="pdu_8h.html#a41904e7f47afc7036b2841f770240820">COAP_OPTION_URI_QUERY</a>, &amp;opt_iter);</div>
<div class="line"><a id="l01678" name="l01678"></a><span class="lineno"> 1678</span>  wkc_len = <a class="code hl_function" href="net_8c.html#a4dc6e755dca2ca804e8700f398f4c329">get_wkc_len</a>(context, query_filter);</div>
<div class="line"><a id="l01679" name="l01679"></a><span class="lineno"> 1679</span> </div>
<div class="line"><a id="l01680" name="l01680"></a><span class="lineno"> 1680</span>  <span class="comment">/* The value of some resources is undefined and get_wkc_len will return 0.*/</span></div>
<div class="line"><a id="l01681" name="l01681"></a><span class="lineno"> 1681</span>  <span class="keywordflow">if</span> (wkc_len == 0) {</div>
<div class="line"><a id="l01682" name="l01682"></a><span class="lineno"> 1682</span>    <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, <span class="stringliteral">&quot;coap_wellknown_response: undefined resource\n&quot;</span>);</div>
<div class="line"><a id="l01683" name="l01683"></a><span class="lineno"> 1683</span>    <span class="comment">/* set error code 4.00 Bad Request*/</span></div>
<div class="line"><a id="l01684" name="l01684"></a><span class="lineno"> 1684</span>    resp-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a69c774f85355eeacc4742355527a8097">code</a> = <a class="code hl_define" href="pdu_8h.html#a651de743c1ff3168c875820cf327b1d6">COAP_RESPONSE_CODE</a>(400);</div>
<div class="line"><a id="l01685" name="l01685"></a><span class="lineno"> 1685</span>    resp-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#ac5018459a3078a5b896119d7464cb273">used_size</a> = resp-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a8c05f6d455ff81d7751ddb61233a455b">token_length</a>;</div>
<div class="line"><a id="l01686" name="l01686"></a><span class="lineno"> 1686</span>    <span class="keywordflow">return</span> resp;</div>
<div class="line"><a id="l01687" name="l01687"></a><span class="lineno"> 1687</span>  }</div>
<div class="line"><a id="l01688" name="l01688"></a><span class="lineno"> 1688</span> </div>
<div class="line"><a id="l01689" name="l01689"></a><span class="lineno"> 1689</span>  <span class="comment">/* check whether the request contains the Block2 option */</span></div>
<div class="line"><a id="l01690" name="l01690"></a><span class="lineno"> 1690</span>  <span class="keywordflow">if</span> (<a class="code hl_function" href="group__block.html#ga714d943bd85123de1b8b6f86ec204a69">coap_get_block</a>(request, <a class="code hl_define" href="pdu_8h.html#a078cdb892664dd5f7ea708b7f403fa8d">COAP_OPTION_BLOCK2</a>, &amp;block)) {</div>
<div class="line"><a id="l01691" name="l01691"></a><span class="lineno"> 1691</span>    <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, <span class="stringliteral">&quot;create block\n&quot;</span>);</div>
<div class="line"><a id="l01692" name="l01692"></a><span class="lineno"> 1692</span>    offset = block.<a class="code hl_variable" href="structcoap__block__t.html#a601d49b58bb18aa216e7bc5410076af9">num</a> &lt;&lt; (block.<a class="code hl_variable" href="structcoap__block__t.html#aaeb4409b7a94cc0de61ea7657996d329">szx</a> + 4);</div>
<div class="line"><a id="l01693" name="l01693"></a><span class="lineno"> 1693</span>    <span class="keywordflow">if</span> (block.<a class="code hl_variable" href="structcoap__block__t.html#aaeb4409b7a94cc0de61ea7657996d329">szx</a> &gt; 6) {  <span class="comment">/* invalid, MUST lead to 4.00 Bad Request */</span></div>
<div class="line"><a id="l01694" name="l01694"></a><span class="lineno"> 1694</span>      resp-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a69c774f85355eeacc4742355527a8097">code</a> = <a class="code hl_define" href="pdu_8h.html#a651de743c1ff3168c875820cf327b1d6">COAP_RESPONSE_CODE</a>(400);</div>
<div class="line"><a id="l01695" name="l01695"></a><span class="lineno"> 1695</span>      <span class="keywordflow">return</span> resp;</div>
<div class="line"><a id="l01696" name="l01696"></a><span class="lineno"> 1696</span>    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (block.<a class="code hl_variable" href="structcoap__block__t.html#aaeb4409b7a94cc0de61ea7657996d329">szx</a> &gt; <a class="code hl_define" href="group__block.html#ga1a064effcefd02b9e5c8f99b297c0edc">COAP_MAX_BLOCK_SZX</a>) {</div>
<div class="line"><a id="l01697" name="l01697"></a><span class="lineno"> 1697</span>      block.<a class="code hl_variable" href="structcoap__block__t.html#aaeb4409b7a94cc0de61ea7657996d329">szx</a> = <a class="code hl_define" href="group__block.html#ga1a064effcefd02b9e5c8f99b297c0edc">COAP_MAX_BLOCK_SZX</a>;</div>
<div class="line"><a id="l01698" name="l01698"></a><span class="lineno"> 1698</span>      block.<a class="code hl_variable" href="structcoap__block__t.html#a601d49b58bb18aa216e7bc5410076af9">num</a> = (<span class="keywordtype">unsigned</span> int)(offset &gt;&gt; (block.<a class="code hl_variable" href="structcoap__block__t.html#aaeb4409b7a94cc0de61ea7657996d329">szx</a> + 4));</div>
<div class="line"><a id="l01699" name="l01699"></a><span class="lineno"> 1699</span>    }</div>
<div class="line"><a id="l01700" name="l01700"></a><span class="lineno"> 1700</span> </div>
<div class="line"><a id="l01701" name="l01701"></a><span class="lineno"> 1701</span>    need_block2 = 1;</div>
<div class="line"><a id="l01702" name="l01702"></a><span class="lineno"> 1702</span>  }</div>
<div class="line"><a id="l01703" name="l01703"></a><span class="lineno"> 1703</span> </div>
<div class="line"><a id="l01704" name="l01704"></a><span class="lineno"> 1704</span>  <span class="comment">/* Check if there is sufficient space to add Content-Format option</span></div>
<div class="line"><a id="l01705" name="l01705"></a><span class="lineno"> 1705</span><span class="comment">   * and data. We do this before adding the Content-Format option to</span></div>
<div class="line"><a id="l01706" name="l01706"></a><span class="lineno"> 1706</span><span class="comment">   * avoid sending error responses with that option but no actual</span></div>
<div class="line"><a id="l01707" name="l01707"></a><span class="lineno"> 1707</span><span class="comment">   * content. */</span></div>
<div class="line"><a id="l01708" name="l01708"></a><span class="lineno"> 1708</span>  <span class="keywordflow">if</span> (resp-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a5bd82194d62c90d9243313cbbbe26d47">max_size</a> &amp;&amp; resp-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a5bd82194d62c90d9243313cbbbe26d47">max_size</a> &lt;= resp-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#ac5018459a3078a5b896119d7464cb273">used_size</a> + 3) {</div>
<div class="line"><a id="l01709" name="l01709"></a><span class="lineno"> 1709</span>    <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, <span class="stringliteral">&quot;coap_wellknown_response: insufficient storage space\n&quot;</span>);</div>
<div class="line"><a id="l01710" name="l01710"></a><span class="lineno"> 1710</span>    <span class="keywordflow">goto</span> error;</div>
<div class="line"><a id="l01711" name="l01711"></a><span class="lineno"> 1711</span>  }</div>
<div class="line"><a id="l01712" name="l01712"></a><span class="lineno"> 1712</span> </div>
<div class="line"><a id="l01713" name="l01713"></a><span class="lineno"> 1713</span>  <span class="comment">/* Add Content-Format. As we have checked for available storage,</span></div>
<div class="line"><a id="l01714" name="l01714"></a><span class="lineno"> 1714</span><span class="comment">   * nothing should go wrong here. */</span></div>
<div class="line"><a id="l01715" name="l01715"></a><span class="lineno"> 1715</span>  <a class="code hl_define" href="mem_8c.html#a3d4ae9c092e117c836f52dc7d7cee574">assert</a>(<a class="code hl_function" href="encode_8c.html#a6987668306bf69553f9b207a624c2d44">coap_encode_var_safe</a>(buf, <span class="keyword">sizeof</span>(buf),</div>
<div class="line"><a id="l01716" name="l01716"></a><span class="lineno"> 1716</span>    <a class="code hl_define" href="pdu_8h.html#af39391900d8a44c795d391f60b0f3105">COAP_MEDIATYPE_APPLICATION_LINK_FORMAT</a>) == 1);</div>
<div class="line"><a id="l01717" name="l01717"></a><span class="lineno"> 1717</span>  <a class="code hl_function" href="pdu_8c.html#aa1314f60fbc25733cfabaa975adc5aae">coap_add_option</a>(resp, <a class="code hl_define" href="pdu_8h.html#a0d3a394e19dd218d3dc6681bbae4cb08">COAP_OPTION_CONTENT_FORMAT</a>,</div>
<div class="line"><a id="l01718" name="l01718"></a><span class="lineno"> 1718</span>    <a class="code hl_function" href="encode_8c.html#a6987668306bf69553f9b207a624c2d44">coap_encode_var_safe</a>(buf, <span class="keyword">sizeof</span>(buf),</div>
<div class="line"><a id="l01719" name="l01719"></a><span class="lineno"> 1719</span>      <a class="code hl_define" href="pdu_8h.html#af39391900d8a44c795d391f60b0f3105">COAP_MEDIATYPE_APPLICATION_LINK_FORMAT</a>), buf);</div>
<div class="line"><a id="l01720" name="l01720"></a><span class="lineno"> 1720</span> </div>
<div class="line"><a id="l01721" name="l01721"></a><span class="lineno"> 1721</span>  <span class="comment">/* check if Block2 option is required even if not requested */</span></div>
<div class="line"><a id="l01722" name="l01722"></a><span class="lineno"> 1722</span>  <span class="keywordflow">if</span> (!need_block2 &amp;&amp; resp-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a5bd82194d62c90d9243313cbbbe26d47">max_size</a> &amp;&amp; resp-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a5bd82194d62c90d9243313cbbbe26d47">max_size</a> - resp-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#ac5018459a3078a5b896119d7464cb273">used_size</a> &lt; wkc_len + 1) {</div>
<div class="line"><a id="l01723" name="l01723"></a><span class="lineno"> 1723</span>    <a class="code hl_define" href="mem_8c.html#a3d4ae9c092e117c836f52dc7d7cee574">assert</a>(resp-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#ac5018459a3078a5b896119d7464cb273">used_size</a> &lt;= resp-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a5bd82194d62c90d9243313cbbbe26d47">max_size</a>);</div>
<div class="line"><a id="l01724" name="l01724"></a><span class="lineno"> 1724</span>    <span class="keyword">const</span> <span class="keywordtype">size_t</span> payloadlen = resp-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a5bd82194d62c90d9243313cbbbe26d47">max_size</a> - resp-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#ac5018459a3078a5b896119d7464cb273">used_size</a>;</div>
<div class="line"><a id="l01725" name="l01725"></a><span class="lineno"> 1725</span>    <span class="comment">/* yes, need block-wise transfer */</span></div>
<div class="line"><a id="l01726" name="l01726"></a><span class="lineno"> 1726</span>    block.<a class="code hl_variable" href="structcoap__block__t.html#a601d49b58bb18aa216e7bc5410076af9">num</a> = 0;</div>
<div class="line"><a id="l01727" name="l01727"></a><span class="lineno"> 1727</span>    block.<a class="code hl_variable" href="structcoap__block__t.html#ab853b0f192d874e5c0fc5d054348731d">m</a> = 0;      <span class="comment">/* the M bit is set by coap_write_block_opt() */</span></div>
<div class="line"><a id="l01728" name="l01728"></a><span class="lineno"> 1728</span>    block.<a class="code hl_variable" href="structcoap__block__t.html#aaeb4409b7a94cc0de61ea7657996d329">szx</a> = <a class="code hl_define" href="group__block.html#ga1a064effcefd02b9e5c8f99b297c0edc">COAP_MAX_BLOCK_SZX</a>;</div>
<div class="line"><a id="l01729" name="l01729"></a><span class="lineno"> 1729</span>    <span class="keywordflow">while</span> (payloadlen &lt; <a class="code hl_define" href="net_8c.html#a641a52ad5cdf4da5859aa7fc0e5fdf95">SZX_TO_BYTES</a>(block.<a class="code hl_variable" href="structcoap__block__t.html#aaeb4409b7a94cc0de61ea7657996d329">szx</a>) + 6) {</div>
<div class="line"><a id="l01730" name="l01730"></a><span class="lineno"> 1730</span>      <span class="keywordflow">if</span> (block.<a class="code hl_variable" href="structcoap__block__t.html#aaeb4409b7a94cc0de61ea7657996d329">szx</a> == 0) {</div>
<div class="line"><a id="l01731" name="l01731"></a><span class="lineno"> 1731</span>        <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>,</div>
<div class="line"><a id="l01732" name="l01732"></a><span class="lineno"> 1732</span>             <span class="stringliteral">&quot;coap_wellknown_response: message to small even for szx == 0\n&quot;</span>);</div>
<div class="line"><a id="l01733" name="l01733"></a><span class="lineno"> 1733</span>        <span class="keywordflow">goto</span> error;</div>
<div class="line"><a id="l01734" name="l01734"></a><span class="lineno"> 1734</span>      } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l01735" name="l01735"></a><span class="lineno"> 1735</span>        block.<a class="code hl_variable" href="structcoap__block__t.html#aaeb4409b7a94cc0de61ea7657996d329">szx</a>--;</div>
<div class="line"><a id="l01736" name="l01736"></a><span class="lineno"> 1736</span>      }</div>
<div class="line"><a id="l01737" name="l01737"></a><span class="lineno"> 1737</span>    }</div>
<div class="line"><a id="l01738" name="l01738"></a><span class="lineno"> 1738</span> </div>
<div class="line"><a id="l01739" name="l01739"></a><span class="lineno"> 1739</span>    need_block2 = 1;</div>
<div class="line"><a id="l01740" name="l01740"></a><span class="lineno"> 1740</span>  }</div>
<div class="line"><a id="l01741" name="l01741"></a><span class="lineno"> 1741</span> </div>
<div class="line"><a id="l01742" name="l01742"></a><span class="lineno"> 1742</span>  <span class="comment">/* write Block2 option if necessary */</span></div>
<div class="line"><a id="l01743" name="l01743"></a><span class="lineno"> 1743</span>  <span class="keywordflow">if</span> (need_block2) {</div>
<div class="line"><a id="l01744" name="l01744"></a><span class="lineno"> 1744</span>    <span class="keywordflow">if</span> (<a class="code hl_function" href="group__block.html#ga0462e5c93460d2df1c60611188192524">coap_write_block_opt</a>(&amp;block, <a class="code hl_define" href="pdu_8h.html#a078cdb892664dd5f7ea708b7f403fa8d">COAP_OPTION_BLOCK2</a>, resp, wkc_len) &lt; 0) {</div>
<div class="line"><a id="l01745" name="l01745"></a><span class="lineno"> 1745</span>      <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>,</div>
<div class="line"><a id="l01746" name="l01746"></a><span class="lineno"> 1746</span>               <span class="stringliteral">&quot;coap_wellknown_response: cannot add Block2 option\n&quot;</span>);</div>
<div class="line"><a id="l01747" name="l01747"></a><span class="lineno"> 1747</span>      <span class="keywordflow">goto</span> error;</div>
<div class="line"><a id="l01748" name="l01748"></a><span class="lineno"> 1748</span>    }</div>
<div class="line"><a id="l01749" name="l01749"></a><span class="lineno"> 1749</span>  }</div>
<div class="line"><a id="l01750" name="l01750"></a><span class="lineno"> 1750</span> </div>
<div class="line"><a id="l01751" name="l01751"></a><span class="lineno"> 1751</span>  len = need_block2 ? <a class="code hl_define" href="net_8c.html#a641a52ad5cdf4da5859aa7fc0e5fdf95">SZX_TO_BYTES</a>( block.<a class="code hl_variable" href="structcoap__block__t.html#aaeb4409b7a94cc0de61ea7657996d329">szx</a> ) :</div>
<div class="line"><a id="l01752" name="l01752"></a><span class="lineno"> 1752</span>        resp-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a5bd82194d62c90d9243313cbbbe26d47">max_size</a> &amp;&amp; resp-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#ac5018459a3078a5b896119d7464cb273">used_size</a> + wkc_len + 1 &gt; resp-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a5bd82194d62c90d9243313cbbbe26d47">max_size</a> ?</div>
<div class="line"><a id="l01753" name="l01753"></a><span class="lineno"> 1753</span>        resp-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a5bd82194d62c90d9243313cbbbe26d47">max_size</a> - resp-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#ac5018459a3078a5b896119d7464cb273">used_size</a> - 1 : wkc_len;</div>
<div class="line"><a id="l01754" name="l01754"></a><span class="lineno"> 1754</span>  data = <a class="code hl_function" href="pdu_8c.html#a3b73fa26504e7a8da604375d1146b7e3">coap_add_data_after</a>(resp, len);</div>
<div class="line"><a id="l01755" name="l01755"></a><span class="lineno"> 1755</span>  <span class="keywordflow">if</span> (!data) {</div>
<div class="line"><a id="l01756" name="l01756"></a><span class="lineno"> 1756</span>    <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, <span class="stringliteral">&quot;coap_wellknown_response: coap_add_data failed\n&quot;</span> );</div>
<div class="line"><a id="l01757" name="l01757"></a><span class="lineno"> 1757</span>    <span class="keywordflow">goto</span> error;</div>
<div class="line"><a id="l01758" name="l01758"></a><span class="lineno"> 1758</span>  }</div>
<div class="line"><a id="l01759" name="l01759"></a><span class="lineno"> 1759</span> </div>
<div class="line"><a id="l01760" name="l01760"></a><span class="lineno"> 1760</span>  result = <a class="code hl_function" href="resource_8c.html#a82195178fe216a47a0cf8a88aa09c9cd">coap_print_wellknown</a>(context, data, &amp;len, offset, query_filter);</div>
<div class="line"><a id="l01761" name="l01761"></a><span class="lineno"> 1761</span>  <span class="keywordflow">if</span> ((result &amp; <a class="code hl_define" href="resource_8h.html#abba955fb8180d86085c2f0680626cfe8">COAP_PRINT_STATUS_ERROR</a>) != 0) {</div>
<div class="line"><a id="l01762" name="l01762"></a><span class="lineno"> 1762</span>    <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, <span class="stringliteral">&quot;coap_print_wellknown failed\n&quot;</span>);</div>
<div class="line"><a id="l01763" name="l01763"></a><span class="lineno"> 1763</span>    <span class="keywordflow">goto</span> error;</div>
<div class="line"><a id="l01764" name="l01764"></a><span class="lineno"> 1764</span>  }</div>
<div class="line"><a id="l01765" name="l01765"></a><span class="lineno"> 1765</span> </div>
<div class="line"><a id="l01766" name="l01766"></a><span class="lineno"> 1766</span>  <span class="keywordflow">return</span> resp;</div>
<div class="line"><a id="l01767" name="l01767"></a><span class="lineno"> 1767</span> </div>
<div class="line"><a id="l01768" name="l01768"></a><span class="lineno"> 1768</span>error:</div>
<div class="line"><a id="l01769" name="l01769"></a><span class="lineno"> 1769</span>  <span class="comment">/* set error code 5.03 and remove all options and data from response */</span></div>
<div class="line"><a id="l01770" name="l01770"></a><span class="lineno"> 1770</span>  resp-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a69c774f85355eeacc4742355527a8097">code</a> = <a class="code hl_define" href="pdu_8h.html#a651de743c1ff3168c875820cf327b1d6">COAP_RESPONSE_CODE</a>(503);</div>
<div class="line"><a id="l01771" name="l01771"></a><span class="lineno"> 1771</span>  resp-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#ac5018459a3078a5b896119d7464cb273">used_size</a> = resp-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a8c05f6d455ff81d7751ddb61233a455b">token_length</a>;</div>
<div class="line"><a id="l01772" name="l01772"></a><span class="lineno"> 1772</span>  <span class="keywordflow">return</span> resp;</div>
<div class="line"><a id="l01773" name="l01773"></a><span class="lineno"> 1773</span>}</div>
</div>
<div class="line"><a id="l01774" name="l01774"></a><span class="lineno"> 1774</span> </div>
<div class="line"><a id="l01785" name="l01785"></a><span class="lineno"> 1785</span><span class="keyword">static</span> <span class="keywordtype">int</span></div>
<div class="foldopen" id="foldopen01786" data-start="{" data-end="}">
<div class="line"><a id="l01786" name="l01786"></a><span class="lineno"><a class="line" href="net_8c.html#a6b355153e3bba3af3df1e72f33ced85c"> 1786</a></span><a class="code hl_function" href="net_8c.html#a6b355153e3bba3af3df1e72f33ced85c">coap_cancel</a>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *context, <span class="keyword">const</span> <a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> *sent) {</div>
<div class="line"><a id="l01787" name="l01787"></a><span class="lineno"> 1787</span><span class="preprocessor">#ifndef WITHOUT_OBSERVE</span></div>
<div class="line"><a id="l01788" name="l01788"></a><span class="lineno"> 1788</span>  <a class="code hl_struct" href="structcoap__binary__t.html">coap_binary_t</a> token = { 0, NULL };</div>
<div class="line"><a id="l01789" name="l01789"></a><span class="lineno"> 1789</span>  <span class="keywordtype">int</span> num_cancelled = 0;    <span class="comment">/* the number of observers cancelled */</span></div>
<div class="line"><a id="l01790" name="l01790"></a><span class="lineno"> 1790</span> </div>
<div class="line"><a id="l01791" name="l01791"></a><span class="lineno"> 1791</span>  <span class="comment">/* remove observer for this resource, if any</span></div>
<div class="line"><a id="l01792" name="l01792"></a><span class="lineno"> 1792</span><span class="comment">   * get token from sent and try to find a matching resource. Uh!</span></div>
<div class="line"><a id="l01793" name="l01793"></a><span class="lineno"> 1793</span><span class="comment">   */</span></div>
<div class="line"><a id="l01794" name="l01794"></a><span class="lineno"> 1794</span> </div>
<div class="line"><a id="l01795" name="l01795"></a><span class="lineno"> 1795</span>  <a class="code hl_define" href="group__string.html#ga607f236d46eb2b285bbfaae7588cea10">COAP_SET_STR</a>(&amp;token, sent-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a8c05f6d455ff81d7751ddb61233a455b">token_length</a>, sent-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a3c42c790abb815d722fbebcd7702a200">token</a>);</div>
<div class="line"><a id="l01796" name="l01796"></a><span class="lineno"> 1796</span> </div>
<div class="line"><a id="l01797" name="l01797"></a><span class="lineno"> 1797</span>  <a class="code hl_define" href="resource_8h.html#afbf6d1376ab4eec0d503f47281877f4c">RESOURCES_ITER</a>(context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aaf441070f9b1f2aea225fc61b60a6bb8">resources</a>, r) {</div>
<div class="line"><a id="l01798" name="l01798"></a><span class="lineno"> 1798</span>    num_cancelled += <a class="code hl_function" href="resource_8c.html#a0ea23a6e5f19c9081f282e0a7cc4452d">coap_delete_observer</a>(r, sent-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a20ff974763849b7aeaca2cbf6f4b8f70">session</a>, &amp;token);</div>
<div class="line"><a id="l01799" name="l01799"></a><span class="lineno"> 1799</span>    <a class="code hl_function" href="net_8c.html#ab0ffe6312ad95fb07b0212f912cf196c">coap_cancel_all_messages</a>(context, sent-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a20ff974763849b7aeaca2cbf6f4b8f70">session</a>, token.<a class="code hl_variable" href="structcoap__binary__t.html#a728a24b7e7a462954cdd7a1790c35a8e">s</a>, token.<a class="code hl_variable" href="structcoap__binary__t.html#a259ade386451359049875d1d90447963">length</a>);</div>
<div class="line"><a id="l01800" name="l01800"></a><span class="lineno"> 1800</span>  }</div>
<div class="line"><a id="l01801" name="l01801"></a><span class="lineno"> 1801</span> </div>
<div class="line"><a id="l01802" name="l01802"></a><span class="lineno"> 1802</span>  <span class="keywordflow">return</span> num_cancelled;</div>
<div class="line"><a id="l01803" name="l01803"></a><span class="lineno"> 1803</span><span class="preprocessor">#else </span><span class="comment">/* WITOUT_OBSERVE */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l01804" name="l01804"></a><span class="lineno"> 1804</span>  <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l01805" name="l01805"></a><span class="lineno"> 1805</span><span class="preprocessor">#endif </span><span class="comment">/* WITOUT_OBSERVE */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l01806" name="l01806"></a><span class="lineno"> 1806</span>}</div>
</div>
<div class="line"><a id="l01807" name="l01807"></a><span class="lineno"> 1807</span> </div>
<div class="line"><a id="l01812" name="l01812"></a><span class="lineno"><a class="line" href="net_8c.html#a19fccec23349a25f5daa69fc231cb415"> 1812</a></span><span class="keyword">enum</span> <a class="code hl_enumeration" href="net_8c.html#a19fccec23349a25f5daa69fc231cb415">respond_t</a> { <a class="code hl_enumvalue" href="net_8c.html#a19fccec23349a25f5daa69fc231cb415a9eb4b37c5646776d1ad24355b3a6f745">RESPONSE_DEFAULT</a>, <a class="code hl_enumvalue" href="net_8c.html#a19fccec23349a25f5daa69fc231cb415a94a97210dbcb738d9af4fd0de5f0aeff">RESPONSE_DROP</a>, <a class="code hl_enumvalue" href="net_8c.html#a19fccec23349a25f5daa69fc231cb415aa8afbd3e995f285f48169283105947e4">RESPONSE_SEND</a> };</div>
<div class="line"><a id="l01813" name="l01813"></a><span class="lineno"> 1813</span> </div>
<div class="line"><a id="l01844" name="l01844"></a><span class="lineno"> 1844</span><span class="keyword">static</span> <span class="keyword">enum</span> <a class="code hl_enumeration" href="net_8c.html#a19fccec23349a25f5daa69fc231cb415">respond_t</a></div>
<div class="foldopen" id="foldopen01845" data-start="{" data-end="}">
<div class="line"><a id="l01845" name="l01845"></a><span class="lineno"><a class="line" href="net_8c.html#aa708f479d33a6ca76bf214a0e0e42de4"> 1845</a></span><a class="code hl_function" href="net_8c.html#aa708f479d33a6ca76bf214a0e0e42de4">no_response</a>(<a class="code hl_struct" href="structcoap__pdu__t.html">coap_pdu_t</a> *request, <a class="code hl_struct" href="structcoap__pdu__t.html">coap_pdu_t</a> *response) {</div>
<div class="line"><a id="l01846" name="l01846"></a><span class="lineno"> 1846</span>  <a class="code hl_typedef" href="option_8h.html#a963ad4994625360a5ac70d9df2ab5412">coap_opt_t</a> *nores;</div>
<div class="line"><a id="l01847" name="l01847"></a><span class="lineno"> 1847</span>  <a class="code hl_struct" href="structcoap__opt__iterator__t.html">coap_opt_iterator_t</a> opt_iter;</div>
<div class="line"><a id="l01848" name="l01848"></a><span class="lineno"> 1848</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> val = 0;</div>
<div class="line"><a id="l01849" name="l01849"></a><span class="lineno"> 1849</span> </div>
<div class="line"><a id="l01850" name="l01850"></a><span class="lineno"> 1850</span>  <a class="code hl_define" href="mem_8c.html#a3d4ae9c092e117c836f52dc7d7cee574">assert</a>(request);</div>
<div class="line"><a id="l01851" name="l01851"></a><span class="lineno"> 1851</span>  <a class="code hl_define" href="mem_8c.html#a3d4ae9c092e117c836f52dc7d7cee574">assert</a>(response);</div>
<div class="line"><a id="l01852" name="l01852"></a><span class="lineno"> 1852</span> </div>
<div class="line"><a id="l01853" name="l01853"></a><span class="lineno"> 1853</span>  <span class="keywordflow">if</span> (<a class="code hl_define" href="pdu_8h.html#a69a63fe3b38001521e87a71b2011750b">COAP_RESPONSE_CLASS</a>(response-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a69c774f85355eeacc4742355527a8097">code</a>) &gt; 0) {</div>
<div class="line"><a id="l01854" name="l01854"></a><span class="lineno"> 1854</span>    nores = <a class="code hl_function" href="group__opt__filter.html#ga35c348f1ce988e6788930a710f4535c9">coap_check_option</a>(request, <a class="code hl_define" href="pdu_8h.html#a01d1357aea9ab79457f45e85b4f8a6ad">COAP_OPTION_NORESPONSE</a>, &amp;opt_iter);</div>
<div class="line"><a id="l01855" name="l01855"></a><span class="lineno"> 1855</span> </div>
<div class="line"><a id="l01856" name="l01856"></a><span class="lineno"> 1856</span>    <span class="keywordflow">if</span> (nores) {</div>
<div class="line"><a id="l01857" name="l01857"></a><span class="lineno"> 1857</span>      val = <a class="code hl_function" href="encode_8c.html#a7d12488893c3062c98bad1f4ab58455c">coap_decode_var_bytes</a>(<a class="code hl_function" href="group__opt__filter.html#gaec4e944d39722779cac610ed22ee09db">coap_opt_value</a>(nores), <a class="code hl_function" href="group__opt__filter.html#gaac65919c93f7047b687d33af9672b3ea">coap_opt_length</a>(nores));</div>
<div class="line"><a id="l01858" name="l01858"></a><span class="lineno"> 1858</span> </div>
<div class="line"><a id="l01859" name="l01859"></a><span class="lineno"> 1859</span>      <span class="comment">/* The response should be dropped when the bit corresponding to</span></div>
<div class="line"><a id="l01860" name="l01860"></a><span class="lineno"> 1860</span><span class="comment">       * the response class is set (cf. table in function</span></div>
<div class="line"><a id="l01861" name="l01861"></a><span class="lineno"> 1861</span><span class="comment">       * documentation). When a No-Response option is present and the</span></div>
<div class="line"><a id="l01862" name="l01862"></a><span class="lineno"> 1862</span><span class="comment">       * bit is not set, the sender explicitly indicates interest in</span></div>
<div class="line"><a id="l01863" name="l01863"></a><span class="lineno"> 1863</span><span class="comment">       * this response. */</span></div>
<div class="line"><a id="l01864" name="l01864"></a><span class="lineno"> 1864</span>      <span class="keywordflow">if</span> (((1 &lt;&lt; (<a class="code hl_define" href="pdu_8h.html#a69a63fe3b38001521e87a71b2011750b">COAP_RESPONSE_CLASS</a>(response-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a69c774f85355eeacc4742355527a8097">code</a>) - 1)) &amp; val) &gt; 0) {</div>
<div class="line"><a id="l01865" name="l01865"></a><span class="lineno"> 1865</span>        <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="net_8c.html#a19fccec23349a25f5daa69fc231cb415a94a97210dbcb738d9af4fd0de5f0aeff">RESPONSE_DROP</a>;</div>
<div class="line"><a id="l01866" name="l01866"></a><span class="lineno"> 1866</span>      } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l01867" name="l01867"></a><span class="lineno"> 1867</span>        <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="net_8c.html#a19fccec23349a25f5daa69fc231cb415aa8afbd3e995f285f48169283105947e4">RESPONSE_SEND</a>;</div>
<div class="line"><a id="l01868" name="l01868"></a><span class="lineno"> 1868</span>      }</div>
<div class="line"><a id="l01869" name="l01869"></a><span class="lineno"> 1869</span>    }</div>
<div class="line"><a id="l01870" name="l01870"></a><span class="lineno"> 1870</span>  }</div>
<div class="line"><a id="l01871" name="l01871"></a><span class="lineno"> 1871</span> </div>
<div class="line"><a id="l01872" name="l01872"></a><span class="lineno"> 1872</span>  <span class="comment">/* Default behavior applies when we are not dealing with a response</span></div>
<div class="line"><a id="l01873" name="l01873"></a><span class="lineno"> 1873</span><span class="comment">   * (class == 0) or the request did not contain a No-Response option.</span></div>
<div class="line"><a id="l01874" name="l01874"></a><span class="lineno"> 1874</span><span class="comment">   */</span></div>
<div class="line"><a id="l01875" name="l01875"></a><span class="lineno"> 1875</span>  <span class="keywordflow">return</span> <a class="code hl_enumvalue" href="net_8c.html#a19fccec23349a25f5daa69fc231cb415a9eb4b37c5646776d1ad24355b3a6f745">RESPONSE_DEFAULT</a>;</div>
<div class="line"><a id="l01876" name="l01876"></a><span class="lineno"> 1876</span>}</div>
</div>
<div class="line"><a id="l01877" name="l01877"></a><span class="lineno"> 1877</span> </div>
<div class="foldopen" id="foldopen01878" data-start="{" data-end="};">
<div class="line"><a id="l01878" name="l01878"></a><span class="lineno"><a class="line" href="net_8c.html#a3e4402058bf2b1ef0b513175af4e600d"> 1878</a></span><span class="keyword">static</span> <a class="code hl_struct" href="structcoap__str__const__t.html">coap_str_const_t</a> <a class="code hl_variable" href="net_8c.html#a3e4402058bf2b1ef0b513175af4e600d">coap_default_uri_wellknown</a> =</div>
<div class="line"><a id="l01879" name="l01879"></a><span class="lineno"> 1879</span>          { <span class="keyword">sizeof</span>(<a class="code hl_define" href="pdu_8h.html#ae988ff4a542f3add75af84433693c134">COAP_DEFAULT_URI_WELLKNOWN</a>)-1,</div>
<div class="line"><a id="l01880" name="l01880"></a><span class="lineno"> 1880</span>           (<span class="keyword">const</span> <a class="code hl_typedef" href="uthash_8h.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a> *)<a class="code hl_define" href="pdu_8h.html#ae988ff4a542f3add75af84433693c134">COAP_DEFAULT_URI_WELLKNOWN</a> };</div>
</div>
<div class="line"><a id="l01881" name="l01881"></a><span class="lineno"> 1881</span> </div>
<div class="line"><a id="l01882" name="l01882"></a><span class="lineno"> 1882</span><span class="keyword">static</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen01883" data-start="{" data-end="}">
<div class="line"><a id="l01883" name="l01883"></a><span class="lineno"><a class="line" href="net_8c.html#a1a280312c4bad55cf10243b9b9c3e966"> 1883</a></span><a class="code hl_function" href="net_8c.html#a1a280312c4bad55cf10243b9b9c3e966">handle_request</a>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *context, <a class="code hl_struct" href="structcoap__session__t.html">coap_session_t</a> *session, <a class="code hl_struct" href="structcoap__pdu__t.html">coap_pdu_t</a> *pdu) {</div>
<div class="line"><a id="l01884" name="l01884"></a><span class="lineno"> 1884</span>  <a class="code hl_typedef" href="resource_8h.html#a0e546da5428d06e7bd64308f3e0434af">coap_method_handler_t</a> h = NULL;</div>
<div class="line"><a id="l01885" name="l01885"></a><span class="lineno"> 1885</span>  <a class="code hl_struct" href="structcoap__pdu__t.html">coap_pdu_t</a> *response = NULL;</div>
<div class="line"><a id="l01886" name="l01886"></a><span class="lineno"> 1886</span>  <a class="code hl_typedef" href="group__opt__filter.html#ga001c5b06ae9e02996509516871cb69a8">coap_opt_filter_t</a> <a class="code hl_struct" href="structopt__filter.html">opt_filter</a>;</div>
<div class="line"><a id="l01887" name="l01887"></a><span class="lineno"> 1887</span>  <a class="code hl_struct" href="structcoap__resource__t.html">coap_resource_t</a> *resource;</div>
<div class="line"><a id="l01888" name="l01888"></a><span class="lineno"> 1888</span>  <span class="comment">/* The respond field indicates whether a response must be treated</span></div>
<div class="line"><a id="l01889" name="l01889"></a><span class="lineno"> 1889</span><span class="comment">   * specially due to a No-Response option that declares disinterest</span></div>
<div class="line"><a id="l01890" name="l01890"></a><span class="lineno"> 1890</span><span class="comment">   * or interest in a specific response class. DEFAULT indicates that</span></div>
<div class="line"><a id="l01891" name="l01891"></a><span class="lineno"> 1891</span><span class="comment">   * No-Response has not been specified. */</span></div>
<div class="line"><a id="l01892" name="l01892"></a><span class="lineno"> 1892</span>  <span class="keyword">enum</span> <a class="code hl_enumeration" href="net_8c.html#a19fccec23349a25f5daa69fc231cb415">respond_t</a> respond = <a class="code hl_enumvalue" href="net_8c.html#a19fccec23349a25f5daa69fc231cb415a9eb4b37c5646776d1ad24355b3a6f745">RESPONSE_DEFAULT</a>;</div>
<div class="line"><a id="l01893" name="l01893"></a><span class="lineno"> 1893</span> </div>
<div class="line"><a id="l01894" name="l01894"></a><span class="lineno"> 1894</span>  <a class="code hl_function" href="group__opt__filter.html#ga883885e793388359ef93d195bdbb4c2c">coap_option_filter_clear</a>(<a class="code hl_struct" href="structopt__filter.html">opt_filter</a>);</div>
<div class="line"><a id="l01895" name="l01895"></a><span class="lineno"> 1895</span> </div>
<div class="line"><a id="l01896" name="l01896"></a><span class="lineno"> 1896</span>  <span class="comment">/* try to find the resource from the request URI */</span></div>
<div class="line"><a id="l01897" name="l01897"></a><span class="lineno"> 1897</span>  <a class="code hl_struct" href="structcoap__string__t.html">coap_string_t</a> *uri_path = <a class="code hl_function" href="uri_8c.html#a11d902f573bcfee188d5ccd4903d0393">coap_get_uri_path</a>(pdu);</div>
<div class="line"><a id="l01898" name="l01898"></a><span class="lineno"> 1898</span>  <span class="keywordflow">if</span> (!uri_path)</div>
<div class="line"><a id="l01899" name="l01899"></a><span class="lineno"> 1899</span>    <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l01900" name="l01900"></a><span class="lineno"> 1900</span>  <a class="code hl_struct" href="structcoap__str__const__t.html">coap_str_const_t</a> uri_path_c = { uri_path-&gt;<a class="code hl_variable" href="structcoap__string__t.html#adbca4bb782ba6046520f8608ef0f5a66">length</a>, uri_path-&gt;<a class="code hl_variable" href="structcoap__string__t.html#ad904e545a40c835079a1eb2dd230fb29">s</a> };</div>
<div class="line"><a id="l01901" name="l01901"></a><span class="lineno"> 1901</span>  resource = <a class="code hl_function" href="resource_8c.html#a3247f7d06524ccbad44273ae9cdfecad">coap_get_resource_from_uri_path</a>(context, &amp;uri_path_c);</div>
<div class="line"><a id="l01902" name="l01902"></a><span class="lineno"> 1902</span> </div>
<div class="line"><a id="l01903" name="l01903"></a><span class="lineno"> 1903</span>  <span class="keywordflow">if</span> ((resource == NULL) || (resource-&gt;<a class="code hl_variable" href="structcoap__resource__t.html#a7b659252268ebdab8636e98fd5951f01">is_unknown</a> == 1)) {</div>
<div class="line"><a id="l01904" name="l01904"></a><span class="lineno"> 1904</span>    <span class="comment">/* The resource was not found or there is an unexpected match against the</span></div>
<div class="line"><a id="l01905" name="l01905"></a><span class="lineno"> 1905</span><span class="comment">     * resource defined for handling unknown URIs.</span></div>
<div class="line"><a id="l01906" name="l01906"></a><span class="lineno"> 1906</span><span class="comment">     * Check if the request URI happens to be the well-known URI, or if the</span></div>
<div class="line"><a id="l01907" name="l01907"></a><span class="lineno"> 1907</span><span class="comment">     * unknown resource handler is defined, a PUT or optionally other methods,</span></div>
<div class="line"><a id="l01908" name="l01908"></a><span class="lineno"> 1908</span><span class="comment">     * if configured, for the unknown handler.</span></div>
<div class="line"><a id="l01909" name="l01909"></a><span class="lineno"> 1909</span><span class="comment">     *</span></div>
<div class="line"><a id="l01910" name="l01910"></a><span class="lineno"> 1910</span><span class="comment">     * if well-known URI generate a default response</span></div>
<div class="line"><a id="l01911" name="l01911"></a><span class="lineno"> 1911</span><span class="comment">     *</span></div>
<div class="line"><a id="l01912" name="l01912"></a><span class="lineno"> 1912</span><span class="comment">     * else if unknown URI handler defined, call the unknown</span></div>
<div class="line"><a id="l01913" name="l01913"></a><span class="lineno"> 1913</span><span class="comment">     *  URI handler (to allow for potential generation of resource</span></div>
<div class="line"><a id="l01914" name="l01914"></a><span class="lineno"> 1914</span><span class="comment">     *  [RFC7272 5.8.3]) if the appropriate method is defined.</span></div>
<div class="line"><a id="l01915" name="l01915"></a><span class="lineno"> 1915</span><span class="comment">     *</span></div>
<div class="line"><a id="l01916" name="l01916"></a><span class="lineno"> 1916</span><span class="comment">     * else if DELETE return 2.02 (RFC7252: 5.8.4.  DELETE)</span></div>
<div class="line"><a id="l01917" name="l01917"></a><span class="lineno"> 1917</span><span class="comment">     *</span></div>
<div class="line"><a id="l01918" name="l01918"></a><span class="lineno"> 1918</span><span class="comment">     * else return 4.04 */</span></div>
<div class="line"><a id="l01919" name="l01919"></a><span class="lineno"> 1919</span> </div>
<div class="line"><a id="l01920" name="l01920"></a><span class="lineno"> 1920</span>    <span class="keywordflow">if</span> (<a class="code hl_define" href="group__string.html#ga7f43c10b486dc6d45c37fcaf987d711b">coap_string_equal</a>(uri_path, &amp;<a class="code hl_variable" href="net_8c.html#a3e4402058bf2b1ef0b513175af4e600d">coap_default_uri_wellknown</a>)) {</div>
<div class="line"><a id="l01921" name="l01921"></a><span class="lineno"> 1921</span>      <span class="comment">/* request for .well-known/core */</span></div>
<div class="line"><a id="l01922" name="l01922"></a><span class="lineno"> 1922</span>      <span class="keywordflow">if</span> (pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a69c774f85355eeacc4742355527a8097">code</a> == <a class="code hl_define" href="pdu_8h.html#ad44b3aac0828f23330a1f3e7a4e4af4e">COAP_REQUEST_GET</a>) { <span class="comment">/* GET */</span></div>
<div class="line"><a id="l01923" name="l01923"></a><span class="lineno"> 1923</span>        <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446a6e98ff471e3ce6c4ef2d75c37ee51837">LOG_INFO</a>, <span class="stringliteral">&quot;create default response for %s\n&quot;</span>,</div>
<div class="line"><a id="l01924" name="l01924"></a><span class="lineno"> 1924</span>                 <a class="code hl_define" href="pdu_8h.html#ae988ff4a542f3add75af84433693c134">COAP_DEFAULT_URI_WELLKNOWN</a>);</div>
<div class="line"><a id="l01925" name="l01925"></a><span class="lineno"> 1925</span>        response = <a class="code hl_function" href="net_8c.html#a4b9a31728201d9c7c032513a185854ff">coap_wellknown_response</a>(context, session, pdu);</div>
<div class="line"><a id="l01926" name="l01926"></a><span class="lineno"> 1926</span>      } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l01927" name="l01927"></a><span class="lineno"> 1927</span>        <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, <span class="stringliteral">&quot;method not allowed for .well-known/core\n&quot;</span>);</div>
<div class="line"><a id="l01928" name="l01928"></a><span class="lineno"> 1928</span>        response = <a class="code hl_function" href="net_8c.html#aa54bb684429ee455f119fc5fb1feb197">coap_new_error_response</a>(pdu, <a class="code hl_define" href="pdu_8h.html#a651de743c1ff3168c875820cf327b1d6">COAP_RESPONSE_CODE</a>(405),</div>
<div class="line"><a id="l01929" name="l01929"></a><span class="lineno"> 1929</span>          <a class="code hl_struct" href="structopt__filter.html">opt_filter</a>);</div>
<div class="line"><a id="l01930" name="l01930"></a><span class="lineno"> 1930</span>      }</div>
<div class="line"><a id="l01931" name="l01931"></a><span class="lineno"> 1931</span>    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> ((context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a3a85c3d3e14611f74907b47b20a83b6e">unknown_resource</a> != NULL) &amp;&amp;</div>
<div class="line"><a id="l01932" name="l01932"></a><span class="lineno"> 1932</span>               ((<span class="keywordtype">size_t</span>)pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a69c774f85355eeacc4742355527a8097">code</a> - 1 &lt;</div>
<div class="line"><a id="l01933" name="l01933"></a><span class="lineno"> 1933</span>                (<span class="keyword">sizeof</span>(resource-&gt;<a class="code hl_variable" href="structcoap__resource__t.html#a64e782257dd1931d6082bff001ecf9c9">handler</a>) / <span class="keyword">sizeof</span>(<a class="code hl_typedef" href="resource_8h.html#a0e546da5428d06e7bd64308f3e0434af">coap_method_handler_t</a>))) &amp;&amp;</div>
<div class="line"><a id="l01934" name="l01934"></a><span class="lineno"> 1934</span>               (context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a3a85c3d3e14611f74907b47b20a83b6e">unknown_resource</a>-&gt;<a class="code hl_variable" href="structcoap__resource__t.html#a64e782257dd1931d6082bff001ecf9c9">handler</a>[pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a69c774f85355eeacc4742355527a8097">code</a> - 1])) {</div>
<div class="line"><a id="l01935" name="l01935"></a><span class="lineno"> 1935</span>      <span class="comment">/*</span></div>
<div class="line"><a id="l01936" name="l01936"></a><span class="lineno"> 1936</span><span class="comment">       * The unknown_resource can be used to handle undefined resources</span></div>
<div class="line"><a id="l01937" name="l01937"></a><span class="lineno"> 1937</span><span class="comment">       * for a PUT request and can support any other registered handler</span></div>
<div class="line"><a id="l01938" name="l01938"></a><span class="lineno"> 1938</span><span class="comment">       * defined for it</span></div>
<div class="line"><a id="l01939" name="l01939"></a><span class="lineno"> 1939</span><span class="comment">       * Example set up code:-</span></div>
<div class="line"><a id="l01940" name="l01940"></a><span class="lineno"> 1940</span><span class="comment">       *   r = coap_resource_unknown_init(hnd_put_unknown);</span></div>
<div class="line"><a id="l01941" name="l01941"></a><span class="lineno"> 1941</span><span class="comment">       *   coap_register_handler(r, COAP_REQUEST_POST, hnd_post_unknown);</span></div>
<div class="line"><a id="l01942" name="l01942"></a><span class="lineno"> 1942</span><span class="comment">       *   coap_register_handler(r, COAP_REQUEST_GET, hnd_get_unknown);</span></div>
<div class="line"><a id="l01943" name="l01943"></a><span class="lineno"> 1943</span><span class="comment">       *   coap_register_handler(r, COAP_REQUEST_DELETE, hnd_delete_unknown);</span></div>
<div class="line"><a id="l01944" name="l01944"></a><span class="lineno"> 1944</span><span class="comment">       *   coap_add_resource(ctx, r);</span></div>
<div class="line"><a id="l01945" name="l01945"></a><span class="lineno"> 1945</span><span class="comment">       *</span></div>
<div class="line"><a id="l01946" name="l01946"></a><span class="lineno"> 1946</span><span class="comment">       * Note: It is not possible to observe the unknown_resource, a separate</span></div>
<div class="line"><a id="l01947" name="l01947"></a><span class="lineno"> 1947</span><span class="comment">       *       resource must be created (by PUT or POST) which has a GET</span></div>
<div class="line"><a id="l01948" name="l01948"></a><span class="lineno"> 1948</span><span class="comment">       *       handler to be observed</span></div>
<div class="line"><a id="l01949" name="l01949"></a><span class="lineno"> 1949</span><span class="comment">       */</span></div>
<div class="line"><a id="l01950" name="l01950"></a><span class="lineno"> 1950</span>      resource = context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a3a85c3d3e14611f74907b47b20a83b6e">unknown_resource</a>;</div>
<div class="line"><a id="l01951" name="l01951"></a><span class="lineno"> 1951</span>    } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a69c774f85355eeacc4742355527a8097">code</a> == <a class="code hl_define" href="pdu_8h.html#a6750e42d35ffae3be6a65f6fbd095a6a">COAP_REQUEST_DELETE</a>) {</div>
<div class="line"><a id="l01952" name="l01952"></a><span class="lineno"> 1952</span>      <span class="comment">/*</span></div>
<div class="line"><a id="l01953" name="l01953"></a><span class="lineno"> 1953</span><span class="comment">       * Request for DELETE on non-existant resource (RFC7252: 5.8.4.  DELETE)</span></div>
<div class="line"><a id="l01954" name="l01954"></a><span class="lineno"> 1954</span><span class="comment">       */</span></div>
<div class="line"><a id="l01955" name="l01955"></a><span class="lineno"> 1955</span>      <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, <span class="stringliteral">&quot;request for unknown resource &#39;%*.*s&#39;,&quot;</span></div>
<div class="line"><a id="l01956" name="l01956"></a><span class="lineno"> 1956</span>                          <span class="stringliteral">&quot; return 2.02\n&quot;</span>,</div>
<div class="line"><a id="l01957" name="l01957"></a><span class="lineno"> 1957</span>                          (<span class="keywordtype">int</span>)uri_path-&gt;<a class="code hl_variable" href="structcoap__string__t.html#adbca4bb782ba6046520f8608ef0f5a66">length</a>,</div>
<div class="line"><a id="l01958" name="l01958"></a><span class="lineno"> 1958</span>                          (<span class="keywordtype">int</span>)uri_path-&gt;<a class="code hl_variable" href="structcoap__string__t.html#adbca4bb782ba6046520f8608ef0f5a66">length</a>,</div>
<div class="line"><a id="l01959" name="l01959"></a><span class="lineno"> 1959</span>                          uri_path-&gt;<a class="code hl_variable" href="structcoap__string__t.html#ad904e545a40c835079a1eb2dd230fb29">s</a>);</div>
<div class="line"><a id="l01960" name="l01960"></a><span class="lineno"> 1960</span>      response =</div>
<div class="line"><a id="l01961" name="l01961"></a><span class="lineno"> 1961</span>        <a class="code hl_function" href="net_8c.html#aa54bb684429ee455f119fc5fb1feb197">coap_new_error_response</a>(pdu, <a class="code hl_define" href="pdu_8h.html#a651de743c1ff3168c875820cf327b1d6">COAP_RESPONSE_CODE</a>(202),</div>
<div class="line"><a id="l01962" name="l01962"></a><span class="lineno"> 1962</span>          <a class="code hl_struct" href="structopt__filter.html">opt_filter</a>);</div>
<div class="line"><a id="l01963" name="l01963"></a><span class="lineno"> 1963</span>    } <span class="keywordflow">else</span> { <span class="comment">/* request for any another resource, return 4.04 */</span></div>
<div class="line"><a id="l01964" name="l01964"></a><span class="lineno"> 1964</span> </div>
<div class="line"><a id="l01965" name="l01965"></a><span class="lineno"> 1965</span>      <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, <span class="stringliteral">&quot;request for unknown resource &#39;%*.*s&#39;, return 4.04\n&quot;</span>,</div>
<div class="line"><a id="l01966" name="l01966"></a><span class="lineno"> 1966</span>               (<span class="keywordtype">int</span>)uri_path-&gt;<a class="code hl_variable" href="structcoap__string__t.html#adbca4bb782ba6046520f8608ef0f5a66">length</a>, (<span class="keywordtype">int</span>)uri_path-&gt;<a class="code hl_variable" href="structcoap__string__t.html#adbca4bb782ba6046520f8608ef0f5a66">length</a>, uri_path-&gt;<a class="code hl_variable" href="structcoap__string__t.html#ad904e545a40c835079a1eb2dd230fb29">s</a>);</div>
<div class="line"><a id="l01967" name="l01967"></a><span class="lineno"> 1967</span>      response =</div>
<div class="line"><a id="l01968" name="l01968"></a><span class="lineno"> 1968</span>        <a class="code hl_function" href="net_8c.html#aa54bb684429ee455f119fc5fb1feb197">coap_new_error_response</a>(pdu, <a class="code hl_define" href="pdu_8h.html#a651de743c1ff3168c875820cf327b1d6">COAP_RESPONSE_CODE</a>(404),</div>
<div class="line"><a id="l01969" name="l01969"></a><span class="lineno"> 1969</span>          <a class="code hl_struct" href="structopt__filter.html">opt_filter</a>);</div>
<div class="line"><a id="l01970" name="l01970"></a><span class="lineno"> 1970</span>    }</div>
<div class="line"><a id="l01971" name="l01971"></a><span class="lineno"> 1971</span> </div>
<div class="line"><a id="l01972" name="l01972"></a><span class="lineno"> 1972</span>    <span class="keywordflow">if</span> (!resource) {</div>
<div class="line"><a id="l01973" name="l01973"></a><span class="lineno"> 1973</span>      <span class="keywordflow">if</span> (response &amp;&amp; (<a class="code hl_function" href="net_8c.html#aa708f479d33a6ca76bf214a0e0e42de4">no_response</a>(pdu, response) != <a class="code hl_enumvalue" href="net_8c.html#a19fccec23349a25f5daa69fc231cb415a94a97210dbcb738d9af4fd0de5f0aeff">RESPONSE_DROP</a>)) {</div>
<div class="line"><a id="l01974" name="l01974"></a><span class="lineno"> 1974</span>        <span class="keywordflow">if</span> (<a class="code hl_function" href="net_8c.html#ab0b0b5db03427c4313c01ec2b12cf8ed">coap_send</a>(session, response) == <a class="code hl_define" href="pdu_8h.html#afe70beb6b87ece4aca2d2735c759c625">COAP_INVALID_TID</a>)</div>
<div class="line"><a id="l01975" name="l01975"></a><span class="lineno"> 1975</span>          <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446a8f6fe15bfe15104da6d1b360194a5400">LOG_WARNING</a>, <span class="stringliteral">&quot;cannot send response for transaction %u\n&quot;</span>,</div>
<div class="line"><a id="l01976" name="l01976"></a><span class="lineno"> 1976</span>                   pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a65877a685b1f3428d3dc872af075ddc1">tid</a>);</div>
<div class="line"><a id="l01977" name="l01977"></a><span class="lineno"> 1977</span>      } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l01978" name="l01978"></a><span class="lineno"> 1978</span>        <a class="code hl_function" href="pdu_8c.html#a48581f968a30ef4278702eb1c16b7a90">coap_delete_pdu</a>(response);</div>
<div class="line"><a id="l01979" name="l01979"></a><span class="lineno"> 1979</span>      }</div>
<div class="line"><a id="l01980" name="l01980"></a><span class="lineno"> 1980</span> </div>
<div class="line"><a id="l01981" name="l01981"></a><span class="lineno"> 1981</span>      response = NULL;</div>
<div class="line"><a id="l01982" name="l01982"></a><span class="lineno"> 1982</span> </div>
<div class="line"><a id="l01983" name="l01983"></a><span class="lineno"> 1983</span>      <a class="code hl_function" href="group__string.html#gad991c87cfcf9b2414d2dc430c8701ed3">coap_delete_string</a>(uri_path);</div>
<div class="line"><a id="l01984" name="l01984"></a><span class="lineno"> 1984</span>      <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l01985" name="l01985"></a><span class="lineno"> 1985</span>    } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l01986" name="l01986"></a><span class="lineno"> 1986</span>      <span class="keywordflow">if</span> (response) {</div>
<div class="line"><a id="l01987" name="l01987"></a><span class="lineno"> 1987</span>        <span class="comment">/* Need to delete unused response - it will get re-created further on */</span></div>
<div class="line"><a id="l01988" name="l01988"></a><span class="lineno"> 1988</span>        <a class="code hl_function" href="pdu_8c.html#a48581f968a30ef4278702eb1c16b7a90">coap_delete_pdu</a>(response);</div>
<div class="line"><a id="l01989" name="l01989"></a><span class="lineno"> 1989</span>      }</div>
<div class="line"><a id="l01990" name="l01990"></a><span class="lineno"> 1990</span>    }</div>
<div class="line"><a id="l01991" name="l01991"></a><span class="lineno"> 1991</span>  }</div>
<div class="line"><a id="l01992" name="l01992"></a><span class="lineno"> 1992</span> </div>
<div class="line"><a id="l01993" name="l01993"></a><span class="lineno"> 1993</span>  <span class="comment">/* the resource was found, check if there is a registered handler */</span></div>
<div class="line"><a id="l01994" name="l01994"></a><span class="lineno"> 1994</span>  <span class="keywordflow">if</span> ((<span class="keywordtype">size_t</span>)pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a69c774f85355eeacc4742355527a8097">code</a> - 1 &lt;</div>
<div class="line"><a id="l01995" name="l01995"></a><span class="lineno"> 1995</span>    <span class="keyword">sizeof</span>(resource-&gt;<a class="code hl_variable" href="structcoap__resource__t.html#a64e782257dd1931d6082bff001ecf9c9">handler</a>) / <span class="keyword">sizeof</span>(<a class="code hl_typedef" href="resource_8h.html#a0e546da5428d06e7bd64308f3e0434af">coap_method_handler_t</a>))</div>
<div class="line"><a id="l01996" name="l01996"></a><span class="lineno"> 1996</span>    h = resource-&gt;<a class="code hl_variable" href="structcoap__resource__t.html#a64e782257dd1931d6082bff001ecf9c9">handler</a>[pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a69c774f85355eeacc4742355527a8097">code</a> - 1];</div>
<div class="line"><a id="l01997" name="l01997"></a><span class="lineno"> 1997</span> </div>
<div class="line"><a id="l01998" name="l01998"></a><span class="lineno"> 1998</span>  <span class="keywordflow">if</span> (h) {</div>
<div class="line"><a id="l01999" name="l01999"></a><span class="lineno"> 1999</span>    <a class="code hl_struct" href="structcoap__string__t.html">coap_string_t</a> *query = <a class="code hl_function" href="uri_8c.html#af625b48713927c0c7cf9fb994ab7a7d4">coap_get_query</a>(pdu);</div>
<div class="line"><a id="l02000" name="l02000"></a><span class="lineno"> 2000</span>    <span class="keywordtype">int</span> owns_query = 1;</div>
<div class="line"><a id="l02001" name="l02001"></a><span class="lineno"> 2001</span>     <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, <span class="stringliteral">&quot;call custom handler for resource &#39;%*.*s&#39;\n&quot;</span>,</div>
<div class="line"><a id="l02002" name="l02002"></a><span class="lineno"> 2002</span>              (<span class="keywordtype">int</span>)resource-&gt;<a class="code hl_variable" href="structcoap__resource__t.html#a38e9f66631ebf849e1742867273e8b1a">uri_path</a>-&gt;<a class="code hl_variable" href="structcoap__str__const__t.html#acab2b62ad139aed3925d34cbf8e3fded">length</a>, (<span class="keywordtype">int</span>)resource-&gt;<a class="code hl_variable" href="structcoap__resource__t.html#a38e9f66631ebf849e1742867273e8b1a">uri_path</a>-&gt;<a class="code hl_variable" href="structcoap__str__const__t.html#acab2b62ad139aed3925d34cbf8e3fded">length</a>,</div>
<div class="line"><a id="l02003" name="l02003"></a><span class="lineno"> 2003</span>              resource-&gt;<a class="code hl_variable" href="structcoap__resource__t.html#a38e9f66631ebf849e1742867273e8b1a">uri_path</a>-&gt;<a class="code hl_variable" href="structcoap__str__const__t.html#a9a80ea586c315c518bc345e83d9c852f">s</a>);</div>
<div class="line"><a id="l02004" name="l02004"></a><span class="lineno"> 2004</span>    response = <a class="code hl_function" href="pdu_8c.html#a4f019ad11b0f633524175488aecbd7d1">coap_pdu_init</a>(pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a0d5796b82924c69852860053020d0684">type</a> == <a class="code hl_define" href="pdu_8h.html#ab6ad49de4b14e7cf5bd0a2a1a87eef2f">COAP_MESSAGE_CON</a></div>
<div class="line"><a id="l02005" name="l02005"></a><span class="lineno"> 2005</span>      ? <a class="code hl_define" href="pdu_8h.html#ab2a2b75edf2611bc01464bb182e4d781">COAP_MESSAGE_ACK</a></div>
<div class="line"><a id="l02006" name="l02006"></a><span class="lineno"> 2006</span>      : <a class="code hl_define" href="pdu_8h.html#a8d16c2a7f279b2b6517b38d58347dead">COAP_MESSAGE_NON</a>,</div>
<div class="line"><a id="l02007" name="l02007"></a><span class="lineno"> 2007</span>      0, pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a65877a685b1f3428d3dc872af075ddc1">tid</a>, <a class="code hl_function" href="coap__session_8c.html#a4368ee622c681bf7cf0b7cfe99c8ab37">coap_session_max_pdu_size</a>(session));</div>
<div class="line"><a id="l02008" name="l02008"></a><span class="lineno"> 2008</span> </div>
<div class="line"><a id="l02009" name="l02009"></a><span class="lineno"> 2009</span>    <span class="comment">/* Implementation detail: coap_add_token() immediately returns 0</span></div>
<div class="line"><a id="l02010" name="l02010"></a><span class="lineno"> 2010</span><span class="comment">       if response == NULL */</span></div>
<div class="line"><a id="l02011" name="l02011"></a><span class="lineno"> 2011</span>    <span class="keywordflow">if</span> (<a class="code hl_function" href="pdu_8c.html#a923f81168ccbbaac1a4ca50837d7be94">coap_add_token</a>(response, pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a8c05f6d455ff81d7751ddb61233a455b">token_length</a>, pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a3c42c790abb815d722fbebcd7702a200">token</a>)) {</div>
<div class="line"><a id="l02012" name="l02012"></a><span class="lineno"> 2012</span>      <a class="code hl_struct" href="structcoap__binary__t.html">coap_binary_t</a> token = { pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a8c05f6d455ff81d7751ddb61233a455b">token_length</a>, pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a3c42c790abb815d722fbebcd7702a200">token</a> };</div>
<div class="line"><a id="l02013" name="l02013"></a><span class="lineno"> 2013</span>      <a class="code hl_struct" href="structcoap__opt__iterator__t.html">coap_opt_iterator_t</a> opt_iter;</div>
<div class="line"><a id="l02014" name="l02014"></a><span class="lineno"> 2014</span>      <a class="code hl_typedef" href="option_8h.html#a963ad4994625360a5ac70d9df2ab5412">coap_opt_t</a> *observe = NULL;</div>
<div class="line"><a id="l02015" name="l02015"></a><span class="lineno"> 2015</span>      <span class="keywordtype">int</span> observe_action = <a class="code hl_define" href="group__observe.html#ga51750fd894c457a4fe45f06c96641b2f">COAP_OBSERVE_CANCEL</a>;</div>
<div class="line"><a id="l02016" name="l02016"></a><span class="lineno"> 2016</span> </div>
<div class="line"><a id="l02017" name="l02017"></a><span class="lineno"> 2017</span>      <span class="comment">/* check for Observe option */</span></div>
<div class="line"><a id="l02018" name="l02018"></a><span class="lineno"> 2018</span>      <span class="keywordflow">if</span> (resource-&gt;<a class="code hl_variable" href="structcoap__resource__t.html#ac398cbf0112b945e22176dbbf9790a87">observable</a>) {</div>
<div class="line"><a id="l02019" name="l02019"></a><span class="lineno"> 2019</span>        observe = <a class="code hl_function" href="group__opt__filter.html#ga35c348f1ce988e6788930a710f4535c9">coap_check_option</a>(pdu, <a class="code hl_define" href="pdu_8h.html#adf17a37fe3a833c8120d5414313c8655">COAP_OPTION_OBSERVE</a>, &amp;opt_iter);</div>
<div class="line"><a id="l02020" name="l02020"></a><span class="lineno"> 2020</span>        <span class="keywordflow">if</span> (observe) {</div>
<div class="line"><a id="l02021" name="l02021"></a><span class="lineno"> 2021</span>          observe_action =</div>
<div class="line"><a id="l02022" name="l02022"></a><span class="lineno"> 2022</span>            <a class="code hl_function" href="encode_8c.html#a7d12488893c3062c98bad1f4ab58455c">coap_decode_var_bytes</a>(<a class="code hl_function" href="group__opt__filter.html#gaec4e944d39722779cac610ed22ee09db">coap_opt_value</a>(observe),</div>
<div class="line"><a id="l02023" name="l02023"></a><span class="lineno"> 2023</span>              <a class="code hl_function" href="group__opt__filter.html#gaac65919c93f7047b687d33af9672b3ea">coap_opt_length</a>(observe));</div>
<div class="line"><a id="l02024" name="l02024"></a><span class="lineno"> 2024</span> </div>
<div class="line"><a id="l02025" name="l02025"></a><span class="lineno"> 2025</span>          <span class="keywordflow">if</span> ((observe_action &amp; <a class="code hl_define" href="group__observe.html#ga51750fd894c457a4fe45f06c96641b2f">COAP_OBSERVE_CANCEL</a>) == 0) {</div>
<div class="line"><a id="l02026" name="l02026"></a><span class="lineno"> 2026</span>            <a class="code hl_struct" href="structcoap__subscription__t.html">coap_subscription_t</a> *subscription;</div>
<div class="line"><a id="l02027" name="l02027"></a><span class="lineno"> 2027</span>            <a class="code hl_struct" href="structcoap__block__t.html">coap_block_t</a> block2;</div>
<div class="line"><a id="l02028" name="l02028"></a><span class="lineno"> 2028</span>            <span class="keywordtype">int</span> has_block2 = 0;</div>
<div class="line"><a id="l02029" name="l02029"></a><span class="lineno"> 2029</span> </div>
<div class="line"><a id="l02030" name="l02030"></a><span class="lineno"> 2030</span>            <span class="keywordflow">if</span> (<a class="code hl_function" href="group__block.html#ga714d943bd85123de1b8b6f86ec204a69">coap_get_block</a>(pdu, <a class="code hl_define" href="pdu_8h.html#a078cdb892664dd5f7ea708b7f403fa8d">COAP_OPTION_BLOCK2</a>, &amp;block2)) {</div>
<div class="line"><a id="l02031" name="l02031"></a><span class="lineno"> 2031</span>              has_block2 = 1;</div>
<div class="line"><a id="l02032" name="l02032"></a><span class="lineno"> 2032</span>            }</div>
<div class="line"><a id="l02033" name="l02033"></a><span class="lineno"> 2033</span>            subscription = <a class="code hl_function" href="resource_8c.html#aa04a51c7660283d48f60bf899fe5c45b">coap_add_observer</a>(resource, session, &amp;token, query, has_block2, block2);</div>
<div class="line"><a id="l02034" name="l02034"></a><span class="lineno"> 2034</span>            owns_query = 0;</div>
<div class="line"><a id="l02035" name="l02035"></a><span class="lineno"> 2035</span>            <span class="keywordflow">if</span> (subscription) {</div>
<div class="line"><a id="l02036" name="l02036"></a><span class="lineno"> 2036</span>              <a class="code hl_function" href="resource_8c.html#ad5bbd78aad763b34f4c0905fcd7b7454">coap_touch_observer</a>(context, session, &amp;token);</div>
<div class="line"><a id="l02037" name="l02037"></a><span class="lineno"> 2037</span>            }</div>
<div class="line"><a id="l02038" name="l02038"></a><span class="lineno"> 2038</span>          } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l02039" name="l02039"></a><span class="lineno"> 2039</span>            <a class="code hl_function" href="resource_8c.html#a0ea23a6e5f19c9081f282e0a7cc4452d">coap_delete_observer</a>(resource, session, &amp;token);</div>
<div class="line"><a id="l02040" name="l02040"></a><span class="lineno"> 2040</span>          }</div>
<div class="line"><a id="l02041" name="l02041"></a><span class="lineno"> 2041</span>        }</div>
<div class="line"><a id="l02042" name="l02042"></a><span class="lineno"> 2042</span>      }</div>
<div class="line"><a id="l02043" name="l02043"></a><span class="lineno"> 2043</span> </div>
<div class="line"><a id="l02044" name="l02044"></a><span class="lineno"> 2044</span>      h(context, resource, session, pdu, &amp;token, query, response);</div>
<div class="line"><a id="l02045" name="l02045"></a><span class="lineno"> 2045</span> </div>
<div class="line"><a id="l02046" name="l02046"></a><span class="lineno"> 2046</span>      <span class="keywordflow">if</span> (query &amp;&amp; owns_query)</div>
<div class="line"><a id="l02047" name="l02047"></a><span class="lineno"> 2047</span>        <a class="code hl_function" href="group__string.html#gad991c87cfcf9b2414d2dc430c8701ed3">coap_delete_string</a>(query);</div>
<div class="line"><a id="l02048" name="l02048"></a><span class="lineno"> 2048</span> </div>
<div class="line"><a id="l02049" name="l02049"></a><span class="lineno"> 2049</span>      respond = <a class="code hl_function" href="net_8c.html#aa708f479d33a6ca76bf214a0e0e42de4">no_response</a>(pdu, response);</div>
<div class="line"><a id="l02050" name="l02050"></a><span class="lineno"> 2050</span>      <span class="keywordflow">if</span> (respond != <a class="code hl_enumvalue" href="net_8c.html#a19fccec23349a25f5daa69fc231cb415a94a97210dbcb738d9af4fd0de5f0aeff">RESPONSE_DROP</a>) {</div>
<div class="line"><a id="l02051" name="l02051"></a><span class="lineno"> 2051</span>        <span class="keywordflow">if</span> (observe &amp;&amp; (<a class="code hl_define" href="pdu_8h.html#a69a63fe3b38001521e87a71b2011750b">COAP_RESPONSE_CLASS</a>(response-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a69c774f85355eeacc4742355527a8097">code</a>) &gt; 2)) {</div>
<div class="line"><a id="l02052" name="l02052"></a><span class="lineno"> 2052</span>          <a class="code hl_function" href="resource_8c.html#a0ea23a6e5f19c9081f282e0a7cc4452d">coap_delete_observer</a>(resource, session, &amp;token);</div>
<div class="line"><a id="l02053" name="l02053"></a><span class="lineno"> 2053</span>        }</div>
<div class="line"><a id="l02054" name="l02054"></a><span class="lineno"> 2054</span> </div>
<div class="line"><a id="l02055" name="l02055"></a><span class="lineno"> 2055</span>        <span class="comment">/* If original request contained a token, and the registered</span></div>
<div class="line"><a id="l02056" name="l02056"></a><span class="lineno"> 2056</span><span class="comment">         * application handler made no changes to the response, then</span></div>
<div class="line"><a id="l02057" name="l02057"></a><span class="lineno"> 2057</span><span class="comment">         * this is an empty ACK with a token, which is a malformed</span></div>
<div class="line"><a id="l02058" name="l02058"></a><span class="lineno"> 2058</span><span class="comment">         * PDU */</span></div>
<div class="line"><a id="l02059" name="l02059"></a><span class="lineno"> 2059</span>        <span class="keywordflow">if</span> ((response-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a0d5796b82924c69852860053020d0684">type</a> == <a class="code hl_define" href="pdu_8h.html#ab2a2b75edf2611bc01464bb182e4d781">COAP_MESSAGE_ACK</a>)</div>
<div class="line"><a id="l02060" name="l02060"></a><span class="lineno"> 2060</span>          &amp;&amp; (response-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a69c774f85355eeacc4742355527a8097">code</a> == 0)) {</div>
<div class="line"><a id="l02061" name="l02061"></a><span class="lineno"> 2061</span>          <span class="comment">/* Remove token from otherwise-empty acknowledgment PDU */</span></div>
<div class="line"><a id="l02062" name="l02062"></a><span class="lineno"> 2062</span>          response-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a8c05f6d455ff81d7751ddb61233a455b">token_length</a> = 0;</div>
<div class="line"><a id="l02063" name="l02063"></a><span class="lineno"> 2063</span>          response-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#ac5018459a3078a5b896119d7464cb273">used_size</a> = 0;</div>
<div class="line"><a id="l02064" name="l02064"></a><span class="lineno"> 2064</span>        }</div>
<div class="line"><a id="l02065" name="l02065"></a><span class="lineno"> 2065</span> </div>
<div class="line"><a id="l02066" name="l02066"></a><span class="lineno"> 2066</span>        <span class="keywordflow">if</span> ((respond == <a class="code hl_enumvalue" href="net_8c.html#a19fccec23349a25f5daa69fc231cb415aa8afbd3e995f285f48169283105947e4">RESPONSE_SEND</a>)</div>
<div class="line"><a id="l02067" name="l02067"></a><span class="lineno"> 2067</span>          || <span class="comment">/* RESPOND_DEFAULT */</span></div>
<div class="line"><a id="l02068" name="l02068"></a><span class="lineno"> 2068</span>          (response-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a0d5796b82924c69852860053020d0684">type</a> != <a class="code hl_define" href="pdu_8h.html#a8d16c2a7f279b2b6517b38d58347dead">COAP_MESSAGE_NON</a> ||</div>
<div class="line"><a id="l02069" name="l02069"></a><span class="lineno"> 2069</span>          (response-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a69c774f85355eeacc4742355527a8097">code</a> &gt;= 64</div>
<div class="line"><a id="l02070" name="l02070"></a><span class="lineno"> 2070</span>            &amp;&amp; !<a class="code hl_define" href="coap__io_8h.html#a20da239bf8ab38350cb845629d6a5f0a">coap_mcast_interface</a>(&amp;node-&gt;local_if)))) {</div>
<div class="line"><a id="l02071" name="l02071"></a><span class="lineno"> 2071</span> </div>
<div class="line"><a id="l02072" name="l02072"></a><span class="lineno"> 2072</span>          <span class="keywordflow">if</span> (<a class="code hl_function" href="net_8c.html#ab0b0b5db03427c4313c01ec2b12cf8ed">coap_send</a>(session, response) == <a class="code hl_define" href="pdu_8h.html#afe70beb6b87ece4aca2d2735c759c625">COAP_INVALID_TID</a>)</div>
<div class="line"><a id="l02073" name="l02073"></a><span class="lineno"> 2073</span>            <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, <span class="stringliteral">&quot;cannot send response for message %d\n&quot;</span>,</div>
<div class="line"><a id="l02074" name="l02074"></a><span class="lineno"> 2074</span>                     pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a65877a685b1f3428d3dc872af075ddc1">tid</a>);</div>
<div class="line"><a id="l02075" name="l02075"></a><span class="lineno"> 2075</span>        } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l02076" name="l02076"></a><span class="lineno"> 2076</span>          <a class="code hl_function" href="pdu_8c.html#a48581f968a30ef4278702eb1c16b7a90">coap_delete_pdu</a>(response);</div>
<div class="line"><a id="l02077" name="l02077"></a><span class="lineno"> 2077</span>        }</div>
<div class="line"><a id="l02078" name="l02078"></a><span class="lineno"> 2078</span>      } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l02079" name="l02079"></a><span class="lineno"> 2079</span>        <a class="code hl_function" href="pdu_8c.html#a48581f968a30ef4278702eb1c16b7a90">coap_delete_pdu</a>(response);</div>
<div class="line"><a id="l02080" name="l02080"></a><span class="lineno"> 2080</span>      }</div>
<div class="line"><a id="l02081" name="l02081"></a><span class="lineno"> 2081</span>      response = NULL;</div>
<div class="line"><a id="l02082" name="l02082"></a><span class="lineno"> 2082</span>    } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l02083" name="l02083"></a><span class="lineno"> 2083</span>      <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446a8f6fe15bfe15104da6d1b360194a5400">LOG_WARNING</a>, <span class="stringliteral">&quot;cannot generate response\r\n&quot;</span>);</div>
<div class="line"><a id="l02084" name="l02084"></a><span class="lineno"> 2084</span>    }</div>
<div class="line"><a id="l02085" name="l02085"></a><span class="lineno"> 2085</span>  } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l02086" name="l02086"></a><span class="lineno"> 2086</span>    <span class="keywordflow">if</span> (<a class="code hl_define" href="group__string.html#ga7f43c10b486dc6d45c37fcaf987d711b">coap_string_equal</a>(uri_path, &amp;<a class="code hl_variable" href="net_8c.html#a3e4402058bf2b1ef0b513175af4e600d">coap_default_uri_wellknown</a>)) {</div>
<div class="line"><a id="l02087" name="l02087"></a><span class="lineno"> 2087</span>      <span class="comment">/* request for .well-known/core */</span></div>
<div class="line"><a id="l02088" name="l02088"></a><span class="lineno"> 2088</span>      <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, <span class="stringliteral">&quot;create default response for %s\n&quot;</span>,</div>
<div class="line"><a id="l02089" name="l02089"></a><span class="lineno"> 2089</span>               <a class="code hl_define" href="pdu_8h.html#ae988ff4a542f3add75af84433693c134">COAP_DEFAULT_URI_WELLKNOWN</a>);</div>
<div class="line"><a id="l02090" name="l02090"></a><span class="lineno"> 2090</span>      response = <a class="code hl_function" href="net_8c.html#a4b9a31728201d9c7c032513a185854ff">coap_wellknown_response</a>(context, session, pdu);</div>
<div class="line"><a id="l02091" name="l02091"></a><span class="lineno"> 2091</span>      <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, <span class="stringliteral">&quot;have wellknown response %p\n&quot;</span>, (<span class="keywordtype">void</span> *)response);</div>
<div class="line"><a id="l02092" name="l02092"></a><span class="lineno"> 2092</span>    } <span class="keywordflow">else</span></div>
<div class="line"><a id="l02093" name="l02093"></a><span class="lineno"> 2093</span>      response = <a class="code hl_function" href="net_8c.html#aa54bb684429ee455f119fc5fb1feb197">coap_new_error_response</a>(pdu, <a class="code hl_define" href="pdu_8h.html#a651de743c1ff3168c875820cf327b1d6">COAP_RESPONSE_CODE</a>(405),</div>
<div class="line"><a id="l02094" name="l02094"></a><span class="lineno"> 2094</span>        <a class="code hl_struct" href="structopt__filter.html">opt_filter</a>);</div>
<div class="line"><a id="l02095" name="l02095"></a><span class="lineno"> 2095</span> </div>
<div class="line"><a id="l02096" name="l02096"></a><span class="lineno"> 2096</span>    <span class="keywordflow">if</span> (response &amp;&amp; (<a class="code hl_function" href="net_8c.html#aa708f479d33a6ca76bf214a0e0e42de4">no_response</a>(pdu, response) != <a class="code hl_enumvalue" href="net_8c.html#a19fccec23349a25f5daa69fc231cb415a94a97210dbcb738d9af4fd0de5f0aeff">RESPONSE_DROP</a>)) {</div>
<div class="line"><a id="l02097" name="l02097"></a><span class="lineno"> 2097</span>      <span class="keywordflow">if</span> (<a class="code hl_function" href="net_8c.html#ab0b0b5db03427c4313c01ec2b12cf8ed">coap_send</a>(session, response) == <a class="code hl_define" href="pdu_8h.html#afe70beb6b87ece4aca2d2735c759c625">COAP_INVALID_TID</a>)</div>
<div class="line"><a id="l02098" name="l02098"></a><span class="lineno"> 2098</span>        <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, <span class="stringliteral">&quot;cannot send response for transaction %d\n&quot;</span>,</div>
<div class="line"><a id="l02099" name="l02099"></a><span class="lineno"> 2099</span>                 pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a65877a685b1f3428d3dc872af075ddc1">tid</a>);</div>
<div class="line"><a id="l02100" name="l02100"></a><span class="lineno"> 2100</span>    } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l02101" name="l02101"></a><span class="lineno"> 2101</span>      <a class="code hl_function" href="pdu_8c.html#a48581f968a30ef4278702eb1c16b7a90">coap_delete_pdu</a>(response);</div>
<div class="line"><a id="l02102" name="l02102"></a><span class="lineno"> 2102</span>    }</div>
<div class="line"><a id="l02103" name="l02103"></a><span class="lineno"> 2103</span>    response = NULL;</div>
<div class="line"><a id="l02104" name="l02104"></a><span class="lineno"> 2104</span>  }</div>
<div class="line"><a id="l02105" name="l02105"></a><span class="lineno"> 2105</span> </div>
<div class="line"><a id="l02106" name="l02106"></a><span class="lineno"> 2106</span>  <a class="code hl_define" href="mem_8c.html#a3d4ae9c092e117c836f52dc7d7cee574">assert</a>(response == NULL);</div>
<div class="line"><a id="l02107" name="l02107"></a><span class="lineno"> 2107</span>  <a class="code hl_function" href="group__string.html#gad991c87cfcf9b2414d2dc430c8701ed3">coap_delete_string</a>(uri_path);</div>
<div class="line"><a id="l02108" name="l02108"></a><span class="lineno"> 2108</span>}</div>
</div>
<div class="line"><a id="l02109" name="l02109"></a><span class="lineno"> 2109</span> </div>
<div class="line"><a id="l02110" name="l02110"></a><span class="lineno"> 2110</span><span class="keyword">static</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen02111" data-start="{" data-end="}">
<div class="line"><a id="l02111" name="l02111"></a><span class="lineno"><a class="line" href="net_8c.html#af838d89087ad96495f8ed7f1a9297168"> 2111</a></span><a class="code hl_function" href="net_8c.html#af838d89087ad96495f8ed7f1a9297168">handle_response</a>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *context, <a class="code hl_struct" href="structcoap__session__t.html">coap_session_t</a> *session,</div>
<div class="line"><a id="l02112" name="l02112"></a><span class="lineno"> 2112</span>  <a class="code hl_struct" href="structcoap__pdu__t.html">coap_pdu_t</a> *sent, <a class="code hl_struct" href="structcoap__pdu__t.html">coap_pdu_t</a> *rcvd) {</div>
<div class="line"><a id="l02113" name="l02113"></a><span class="lineno"> 2113</span> </div>
<div class="line"><a id="l02114" name="l02114"></a><span class="lineno"> 2114</span>  <a class="code hl_function" href="net_8c.html#aba278b109415057d15196fa46afee970">coap_send_ack</a>(session, rcvd);</div>
<div class="line"><a id="l02115" name="l02115"></a><span class="lineno"> 2115</span> </div>
<div class="line"><a id="l02116" name="l02116"></a><span class="lineno"> 2116</span>  <span class="comment">/* In a lossy context, the ACK of a separate response may have</span></div>
<div class="line"><a id="l02117" name="l02117"></a><span class="lineno"> 2117</span><span class="comment">   * been lost, so we need to stop retransmitting requests with the</span></div>
<div class="line"><a id="l02118" name="l02118"></a><span class="lineno"> 2118</span><span class="comment">   * same token.</span></div>
<div class="line"><a id="l02119" name="l02119"></a><span class="lineno"> 2119</span><span class="comment">   */</span></div>
<div class="line"><a id="l02120" name="l02120"></a><span class="lineno"> 2120</span>  <a class="code hl_function" href="net_8c.html#ab0ffe6312ad95fb07b0212f912cf196c">coap_cancel_all_messages</a>(context, session, rcvd-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a3c42c790abb815d722fbebcd7702a200">token</a>, rcvd-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a8c05f6d455ff81d7751ddb61233a455b">token_length</a>);</div>
<div class="line"><a id="l02121" name="l02121"></a><span class="lineno"> 2121</span> </div>
<div class="line"><a id="l02122" name="l02122"></a><span class="lineno"> 2122</span>  <span class="comment">/* Call application-specific response handler when available. */</span></div>
<div class="line"><a id="l02123" name="l02123"></a><span class="lineno"> 2123</span>  <span class="keywordflow">if</span> (context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aaeae5156b5641ce3a0bb6d13f5c226d2">response_handler</a>) {</div>
<div class="line"><a id="l02124" name="l02124"></a><span class="lineno"> 2124</span>    context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aaeae5156b5641ce3a0bb6d13f5c226d2">response_handler</a>(context, session, sent, rcvd, rcvd-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a65877a685b1f3428d3dc872af075ddc1">tid</a>);</div>
<div class="line"><a id="l02125" name="l02125"></a><span class="lineno"> 2125</span>  }</div>
<div class="line"><a id="l02126" name="l02126"></a><span class="lineno"> 2126</span>}</div>
</div>
<div class="line"><a id="l02127" name="l02127"></a><span class="lineno"> 2127</span> </div>
<div class="line"><a id="l02128" name="l02128"></a><span class="lineno"> 2128</span><span class="keyword">static</span> <span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen02129" data-start="{" data-end="}">
<div class="line"><a id="l02129" name="l02129"></a><span class="lineno"><a class="line" href="net_8c.html#ac4cbcfd073489b57805db665ce3d0681"> 2129</a></span><a class="code hl_function" href="net_8c.html#ac4cbcfd073489b57805db665ce3d0681">handle_signaling</a>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *context, <a class="code hl_struct" href="structcoap__session__t.html">coap_session_t</a> *session,</div>
<div class="line"><a id="l02130" name="l02130"></a><span class="lineno"> 2130</span>  <a class="code hl_struct" href="structcoap__pdu__t.html">coap_pdu_t</a> *pdu) {</div>
<div class="line"><a id="l02131" name="l02131"></a><span class="lineno"> 2131</span>  <a class="code hl_struct" href="structcoap__opt__iterator__t.html">coap_opt_iterator_t</a> opt_iter;</div>
<div class="line"><a id="l02132" name="l02132"></a><span class="lineno"> 2132</span>  <a class="code hl_typedef" href="option_8h.html#a963ad4994625360a5ac70d9df2ab5412">coap_opt_t</a> *option;</div>
<div class="line"><a id="l02133" name="l02133"></a><span class="lineno"> 2133</span>  (void)context;</div>
<div class="line"><a id="l02134" name="l02134"></a><span class="lineno"> 2134</span> </div>
<div class="line"><a id="l02135" name="l02135"></a><span class="lineno"> 2135</span>  <a class="code hl_function" href="group__opt__filter.html#gaa76930050882387b0f5c7d0246e14440">coap_option_iterator_init</a>(pdu, &amp;opt_iter, <a class="code hl_define" href="group__opt__filter.html#ga81f470e9cdcc258799e10f6ed8a3ce5e">COAP_OPT_ALL</a>);</div>
<div class="line"><a id="l02136" name="l02136"></a><span class="lineno"> 2136</span> </div>
<div class="line"><a id="l02137" name="l02137"></a><span class="lineno"> 2137</span>  <span class="keywordflow">if</span> (pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a69c774f85355eeacc4742355527a8097">code</a> == <a class="code hl_define" href="pdu_8h.html#a63bb73e0bfcbc80e6c4ba9e3c1f8ee32">COAP_SIGNALING_CSM</a>) {</div>
<div class="line"><a id="l02138" name="l02138"></a><span class="lineno"> 2138</span>    <span class="keywordflow">while</span> ((option = <a class="code hl_function" href="group__opt__filter.html#ga19d4dbbc03ef362996964fbfdd1d4c7b">coap_option_next</a>(&amp;opt_iter))) {</div>
<div class="line"><a id="l02139" name="l02139"></a><span class="lineno"> 2139</span>      <span class="keywordflow">if</span> (opt_iter.<a class="code hl_variable" href="structcoap__opt__iterator__t.html#a0df30f4a2bb85deb3d493fded6967b9d">type</a> == <a class="code hl_define" href="pdu_8h.html#af5bbc4f5f7dc78bec5a7a9f74d88a20d">COAP_SIGNALING_OPTION_MAX_MESSAGE_SIZE</a>) {</div>
<div class="line"><a id="l02140" name="l02140"></a><span class="lineno"> 2140</span>        <a class="code hl_function" href="coap__session_8c.html#a23671937b7c384fb768ccd00cc39db45">coap_session_set_mtu</a>(session, <a class="code hl_function" href="encode_8c.html#a7d12488893c3062c98bad1f4ab58455c">coap_decode_var_bytes</a>(<a class="code hl_function" href="group__opt__filter.html#gaec4e944d39722779cac610ed22ee09db">coap_opt_value</a>(option),</div>
<div class="line"><a id="l02141" name="l02141"></a><span class="lineno"> 2141</span>          <a class="code hl_function" href="group__opt__filter.html#gaac65919c93f7047b687d33af9672b3ea">coap_opt_length</a>(option)));</div>
<div class="line"><a id="l02142" name="l02142"></a><span class="lineno"> 2142</span>      } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (opt_iter.<a class="code hl_variable" href="structcoap__opt__iterator__t.html#a0df30f4a2bb85deb3d493fded6967b9d">type</a> == <a class="code hl_define" href="pdu_8h.html#a8ccd8621181b13b832efed665539dd62">COAP_SIGNALING_OPTION_BLOCK_WISE_TRANSFER</a>) {</div>
<div class="line"><a id="l02143" name="l02143"></a><span class="lineno"> 2143</span>        <span class="comment">/* ... */</span></div>
<div class="line"><a id="l02144" name="l02144"></a><span class="lineno"> 2144</span>      }</div>
<div class="line"><a id="l02145" name="l02145"></a><span class="lineno"> 2145</span>    }</div>
<div class="line"><a id="l02146" name="l02146"></a><span class="lineno"> 2146</span>    <span class="keywordflow">if</span> (session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a382b6afaed298581b57d62aaf043cfe3">state</a> == <a class="code hl_define" href="coap__session_8h.html#a444a82f20628438269ebd418c4bdbe5f">COAP_SESSION_STATE_CSM</a>)</div>
<div class="line"><a id="l02147" name="l02147"></a><span class="lineno"> 2147</span>      <a class="code hl_function" href="coap__session_8c.html#aa8b3a2da8480911b0216dad076038cb6">coap_session_connected</a>(session);</div>
<div class="line"><a id="l02148" name="l02148"></a><span class="lineno"> 2148</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a69c774f85355eeacc4742355527a8097">code</a> == <a class="code hl_define" href="pdu_8h.html#adc8e9f46192e447fc87423e412a7cee7">COAP_SIGNALING_PING</a>) {</div>
<div class="line"><a id="l02149" name="l02149"></a><span class="lineno"> 2149</span>    <a class="code hl_struct" href="structcoap__pdu__t.html">coap_pdu_t</a> *pong = <a class="code hl_function" href="pdu_8c.html#a4f019ad11b0f633524175488aecbd7d1">coap_pdu_init</a>(<a class="code hl_define" href="pdu_8h.html#ab6ad49de4b14e7cf5bd0a2a1a87eef2f">COAP_MESSAGE_CON</a>, <a class="code hl_define" href="pdu_8h.html#a3920fed2c2ffc3b40a9e495e47dfe17f">COAP_SIGNALING_PONG</a>, 0, 1);</div>
<div class="line"><a id="l02150" name="l02150"></a><span class="lineno"> 2150</span>    <span class="keywordflow">if</span> (context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a92b6634824600447d806e34e9cf58f9e">ping_handler</a>) {</div>
<div class="line"><a id="l02151" name="l02151"></a><span class="lineno"> 2151</span>      context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a92b6634824600447d806e34e9cf58f9e">ping_handler</a>(context, session, pdu, pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a65877a685b1f3428d3dc872af075ddc1">tid</a>);</div>
<div class="line"><a id="l02152" name="l02152"></a><span class="lineno"> 2152</span>    }</div>
<div class="line"><a id="l02153" name="l02153"></a><span class="lineno"> 2153</span>    <span class="keywordflow">if</span> (pong) {</div>
<div class="line"><a id="l02154" name="l02154"></a><span class="lineno"> 2154</span>      <a class="code hl_function" href="pdu_8c.html#aa1314f60fbc25733cfabaa975adc5aae">coap_add_option</a>(pong, <a class="code hl_define" href="pdu_8h.html#ab1709ea7c61e18152310b537e09b6fee">COAP_SIGNALING_OPTION_CUSTODY</a>, 0, NULL);</div>
<div class="line"><a id="l02155" name="l02155"></a><span class="lineno"> 2155</span>      <a class="code hl_function" href="net_8c.html#ab0b0b5db03427c4313c01ec2b12cf8ed">coap_send</a>(session, pong);</div>
<div class="line"><a id="l02156" name="l02156"></a><span class="lineno"> 2156</span>    }</div>
<div class="line"><a id="l02157" name="l02157"></a><span class="lineno"> 2157</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a69c774f85355eeacc4742355527a8097">code</a> == <a class="code hl_define" href="pdu_8h.html#a3920fed2c2ffc3b40a9e495e47dfe17f">COAP_SIGNALING_PONG</a>) {</div>
<div class="line"><a id="l02158" name="l02158"></a><span class="lineno"> 2158</span>    session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a017ee7bfd8942df7a1c656fe52d5ac6a">last_pong</a> = session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a28348c0c301bce7201403aa5545ef2b6">last_rx_tx</a>;</div>
<div class="line"><a id="l02159" name="l02159"></a><span class="lineno"> 2159</span>    <span class="keywordflow">if</span> (context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a094b3eaad04393ebf8527f6f6b58112e">pong_handler</a>) {</div>
<div class="line"><a id="l02160" name="l02160"></a><span class="lineno"> 2160</span>      context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a094b3eaad04393ebf8527f6f6b58112e">pong_handler</a>(context, session, pdu, pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a65877a685b1f3428d3dc872af075ddc1">tid</a>);</div>
<div class="line"><a id="l02161" name="l02161"></a><span class="lineno"> 2161</span>    }</div>
<div class="line"><a id="l02162" name="l02162"></a><span class="lineno"> 2162</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a69c774f85355eeacc4742355527a8097">code</a> == <a class="code hl_define" href="pdu_8h.html#ad3712b5b4c91bdacf40ae73f7f38070a">COAP_SIGNALING_RELEASE</a></div>
<div class="line"><a id="l02163" name="l02163"></a><span class="lineno"> 2163</span>          || pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a69c774f85355eeacc4742355527a8097">code</a> == <a class="code hl_define" href="pdu_8h.html#af6d5cf87a33203370b28929a8364cc6a">COAP_SIGNALING_ABORT</a>) {</div>
<div class="line"><a id="l02164" name="l02164"></a><span class="lineno"> 2164</span>    <a class="code hl_function" href="coap__session_8c.html#ad3377d3198c10fa086502035ded9c268">coap_session_disconnected</a>(session, <a class="code hl_enumvalue" href="coap__io_8h.html#a7ff2bb32137ca684be5539c156bdc418a9add7e23f77f49b0c7199b6cda1ea9c0">COAP_NACK_RST</a>);</div>
<div class="line"><a id="l02165" name="l02165"></a><span class="lineno"> 2165</span>  }</div>
<div class="line"><a id="l02166" name="l02166"></a><span class="lineno"> 2166</span>}</div>
</div>
<div class="line"><a id="l02167" name="l02167"></a><span class="lineno"> 2167</span> </div>
<div class="line"><a id="l02168" name="l02168"></a><span class="lineno"> 2168</span><span class="keywordtype">void</span></div>
<div class="foldopen" id="foldopen02169" data-start="{" data-end="}">
<div class="line"><a id="l02169" name="l02169"></a><span class="lineno"><a class="line" href="net_8c.html#a7bb944fc52f772655356d95724317401"> 2169</a></span><a class="code hl_function" href="net_8c.html#a7bb944fc52f772655356d95724317401">coap_dispatch</a>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *context, <a class="code hl_struct" href="structcoap__session__t.html">coap_session_t</a> *session,</div>
<div class="line"><a id="l02170" name="l02170"></a><span class="lineno"> 2170</span>  <a class="code hl_struct" href="structcoap__pdu__t.html">coap_pdu_t</a> *pdu) {</div>
<div class="line"><a id="l02171" name="l02171"></a><span class="lineno"> 2171</span>  <a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> *sent = NULL;</div>
<div class="line"><a id="l02172" name="l02172"></a><span class="lineno"> 2172</span>  <a class="code hl_struct" href="structcoap__pdu__t.html">coap_pdu_t</a> *response;</div>
<div class="line"><a id="l02173" name="l02173"></a><span class="lineno"> 2173</span>  <a class="code hl_typedef" href="group__opt__filter.html#ga001c5b06ae9e02996509516871cb69a8">coap_opt_filter_t</a> <a class="code hl_struct" href="structopt__filter.html">opt_filter</a>;</div>
<div class="line"><a id="l02174" name="l02174"></a><span class="lineno"> 2174</span> </div>
<div class="line"><a id="l02175" name="l02175"></a><span class="lineno"> 2175</span><span class="preprocessor">#ifndef NDEBUG</span></div>
<div class="line"><a id="l02176" name="l02176"></a><span class="lineno"> 2176</span>  <span class="keywordflow">if</span> (<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a> &lt;= <a class="code hl_function" href="group__logging.html#ga10c3fbd56b0eb3a8722b27a65fc9b0ce">coap_get_log_level</a>()) {</div>
<div class="line"><a id="l02177" name="l02177"></a><span class="lineno"> 2177</span><span class="preprocessor">#ifndef INET6_ADDRSTRLEN</span></div>
<div class="line"><a id="l02178" name="l02178"></a><span class="lineno"> 2178</span><span class="preprocessor">#define INET6_ADDRSTRLEN 40</span></div>
<div class="line"><a id="l02179" name="l02179"></a><span class="lineno"> 2179</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02180" name="l02180"></a><span class="lineno"> 2180</span>    <span class="comment">/* FIXME: get debug to work again **</span></div>
<div class="line"><a id="l02181" name="l02181"></a><span class="lineno"> 2181</span><span class="comment">    unsigned char addr[INET6_ADDRSTRLEN+8], localaddr[INET6_ADDRSTRLEN+8];</span></div>
<div class="line"><a id="l02182" name="l02182"></a><span class="lineno"> 2182</span><span class="comment">    if (coap_print_addr(remote, addr, INET6_ADDRSTRLEN+8) &amp;&amp;</span></div>
<div class="line"><a id="l02183" name="l02183"></a><span class="lineno"> 2183</span><span class="comment">        coap_print_addr(&amp;packet-&gt;dst, localaddr, INET6_ADDRSTRLEN+8) )</span></div>
<div class="line"><a id="l02184" name="l02184"></a><span class="lineno"> 2184</span><span class="comment">      coap_log(LOG_DEBUG, &quot;** received %d bytes from %s on interface %s:\n&quot;,</span></div>
<div class="line"><a id="l02185" name="l02185"></a><span class="lineno"> 2185</span><span class="comment">            (int)msg_len, addr, localaddr);</span></div>
<div class="line"><a id="l02186" name="l02186"></a><span class="lineno"> 2186</span><span class="comment"></span> </div>
<div class="line"><a id="l02187" name="l02187"></a><span class="lineno"> 2187</span><span class="comment">            */</span></div>
<div class="line"><a id="l02188" name="l02188"></a><span class="lineno"> 2188</span>    <a class="code hl_function" href="group__logging.html#ga3123fcde8310c0f7cb48897a683baef6">coap_show_pdu</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, pdu);</div>
<div class="line"><a id="l02189" name="l02189"></a><span class="lineno"> 2189</span>  }</div>
<div class="line"><a id="l02190" name="l02190"></a><span class="lineno"> 2190</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02191" name="l02191"></a><span class="lineno"> 2191</span> </div>
<div class="line"><a id="l02192" name="l02192"></a><span class="lineno"> 2192</span>  memset(<a class="code hl_struct" href="structopt__filter.html">opt_filter</a>, 0, <span class="keyword">sizeof</span>(<a class="code hl_typedef" href="group__opt__filter.html#ga001c5b06ae9e02996509516871cb69a8">coap_opt_filter_t</a>));</div>
<div class="line"><a id="l02193" name="l02193"></a><span class="lineno"> 2193</span> </div>
<div class="line"><a id="l02194" name="l02194"></a><span class="lineno"> 2194</span>  <span class="keywordflow">switch</span> (pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a0d5796b82924c69852860053020d0684">type</a>) {</div>
<div class="line"><a id="l02195" name="l02195"></a><span class="lineno"> 2195</span>    <span class="keywordflow">case</span> <a class="code hl_define" href="pdu_8h.html#ab2a2b75edf2611bc01464bb182e4d781">COAP_MESSAGE_ACK</a>:</div>
<div class="line"><a id="l02196" name="l02196"></a><span class="lineno"> 2196</span>      <span class="comment">/* find transaction in sendqueue to stop retransmission */</span></div>
<div class="line"><a id="l02197" name="l02197"></a><span class="lineno"> 2197</span>      <a class="code hl_function" href="net_8c.html#a480a3e967feaf00778dedf4c2fc68bd2">coap_remove_from_queue</a>(&amp;context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a>, session, pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a65877a685b1f3428d3dc872af075ddc1">tid</a>, &amp;sent);</div>
<div class="line"><a id="l02198" name="l02198"></a><span class="lineno"> 2198</span> </div>
<div class="line"><a id="l02199" name="l02199"></a><span class="lineno"> 2199</span>      <span class="keywordflow">if</span> (session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#ab360022130771a166ea0e93a1876ced4">con_active</a>) {</div>
<div class="line"><a id="l02200" name="l02200"></a><span class="lineno"> 2200</span>        session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#ab360022130771a166ea0e93a1876ced4">con_active</a>--;</div>
<div class="line"><a id="l02201" name="l02201"></a><span class="lineno"> 2201</span>        <span class="keywordflow">if</span> (session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a382b6afaed298581b57d62aaf043cfe3">state</a> == <a class="code hl_define" href="coap__session_8h.html#a954b835ecd156cde63fee7d5f279ab32">COAP_SESSION_STATE_ESTABLISHED</a>)</div>
<div class="line"><a id="l02202" name="l02202"></a><span class="lineno"> 2202</span>          <span class="comment">/* Flush out any entries on session-&gt;delayqueue */</span></div>
<div class="line"><a id="l02203" name="l02203"></a><span class="lineno"> 2203</span>          <a class="code hl_function" href="coap__session_8c.html#aa8b3a2da8480911b0216dad076038cb6">coap_session_connected</a>(session);</div>
<div class="line"><a id="l02204" name="l02204"></a><span class="lineno"> 2204</span>      }</div>
<div class="line"><a id="l02205" name="l02205"></a><span class="lineno"> 2205</span>      <span class="keywordflow">if</span> (pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a69c774f85355eeacc4742355527a8097">code</a> == 0)</div>
<div class="line"><a id="l02206" name="l02206"></a><span class="lineno"> 2206</span>        <span class="keywordflow">goto</span> cleanup;</div>
<div class="line"><a id="l02207" name="l02207"></a><span class="lineno"> 2207</span> </div>
<div class="line"><a id="l02208" name="l02208"></a><span class="lineno"> 2208</span>      <span class="comment">/* if sent code was &gt;= 64 the message might have been a</span></div>
<div class="line"><a id="l02209" name="l02209"></a><span class="lineno"> 2209</span><span class="comment">       * notification. Then, we must flag the observer to be alive</span></div>
<div class="line"><a id="l02210" name="l02210"></a><span class="lineno"> 2210</span><span class="comment">       * by setting obs-&gt;fail_cnt = 0. */</span></div>
<div class="line"><a id="l02211" name="l02211"></a><span class="lineno"> 2211</span>      <span class="keywordflow">if</span> (sent &amp;&amp; <a class="code hl_define" href="pdu_8h.html#a69a63fe3b38001521e87a71b2011750b">COAP_RESPONSE_CLASS</a>(sent-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a69c774f85355eeacc4742355527a8097">code</a>) == 2) {</div>
<div class="line"><a id="l02212" name="l02212"></a><span class="lineno"> 2212</span>        <span class="keyword">const</span> <a class="code hl_struct" href="structcoap__binary__t.html">coap_binary_t</a> token =</div>
<div class="line"><a id="l02213" name="l02213"></a><span class="lineno"> 2213</span>        { sent-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a8c05f6d455ff81d7751ddb61233a455b">token_length</a>, sent-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a3c42c790abb815d722fbebcd7702a200">token</a> };</div>
<div class="line"><a id="l02214" name="l02214"></a><span class="lineno"> 2214</span>        <a class="code hl_function" href="resource_8c.html#ad5bbd78aad763b34f4c0905fcd7b7454">coap_touch_observer</a>(context, sent-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a20ff974763849b7aeaca2cbf6f4b8f70">session</a>, &amp;token);</div>
<div class="line"><a id="l02215" name="l02215"></a><span class="lineno"> 2215</span>      }</div>
<div class="line"><a id="l02216" name="l02216"></a><span class="lineno"> 2216</span>      <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l02217" name="l02217"></a><span class="lineno"> 2217</span> </div>
<div class="line"><a id="l02218" name="l02218"></a><span class="lineno"> 2218</span>    <span class="keywordflow">case</span> <a class="code hl_define" href="pdu_8h.html#a9ca373ecc6b3ea33fa62791ce3d58c9a">COAP_MESSAGE_RST</a>:</div>
<div class="line"><a id="l02219" name="l02219"></a><span class="lineno"> 2219</span>      <span class="comment">/* We have sent something the receiver disliked, so we remove</span></div>
<div class="line"><a id="l02220" name="l02220"></a><span class="lineno"> 2220</span><span class="comment">       * not only the transaction but also the subscriptions we might</span></div>
<div class="line"><a id="l02221" name="l02221"></a><span class="lineno"> 2221</span><span class="comment">       * have. */</span></div>
<div class="line"><a id="l02222" name="l02222"></a><span class="lineno"> 2222</span> </div>
<div class="line"><a id="l02223" name="l02223"></a><span class="lineno"> 2223</span>      <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446a81d3a95073074ab212668a29218cc343">LOG_ALERT</a>, <span class="stringliteral">&quot;got RST for message %d\n&quot;</span>, pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a65877a685b1f3428d3dc872af075ddc1">tid</a>);</div>
<div class="line"><a id="l02224" name="l02224"></a><span class="lineno"> 2224</span> </div>
<div class="line"><a id="l02225" name="l02225"></a><span class="lineno"> 2225</span>      <span class="keywordflow">if</span> (session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#ab360022130771a166ea0e93a1876ced4">con_active</a>) {</div>
<div class="line"><a id="l02226" name="l02226"></a><span class="lineno"> 2226</span>        session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#ab360022130771a166ea0e93a1876ced4">con_active</a>--;</div>
<div class="line"><a id="l02227" name="l02227"></a><span class="lineno"> 2227</span>        <span class="keywordflow">if</span> (session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a382b6afaed298581b57d62aaf043cfe3">state</a> == <a class="code hl_define" href="coap__session_8h.html#a954b835ecd156cde63fee7d5f279ab32">COAP_SESSION_STATE_ESTABLISHED</a>)</div>
<div class="line"><a id="l02228" name="l02228"></a><span class="lineno"> 2228</span>          <span class="comment">/* Flush out any entries on session-&gt;delayqueue */</span></div>
<div class="line"><a id="l02229" name="l02229"></a><span class="lineno"> 2229</span>          <a class="code hl_function" href="coap__session_8c.html#aa8b3a2da8480911b0216dad076038cb6">coap_session_connected</a>(session);</div>
<div class="line"><a id="l02230" name="l02230"></a><span class="lineno"> 2230</span>      }</div>
<div class="line"><a id="l02231" name="l02231"></a><span class="lineno"> 2231</span> </div>
<div class="line"><a id="l02232" name="l02232"></a><span class="lineno"> 2232</span>      <span class="comment">/* find transaction in sendqueue to stop retransmission */</span></div>
<div class="line"><a id="l02233" name="l02233"></a><span class="lineno"> 2233</span>      <a class="code hl_function" href="net_8c.html#a480a3e967feaf00778dedf4c2fc68bd2">coap_remove_from_queue</a>(&amp;context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a>, session, pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a65877a685b1f3428d3dc872af075ddc1">tid</a>, &amp;sent);</div>
<div class="line"><a id="l02234" name="l02234"></a><span class="lineno"> 2234</span> </div>
<div class="line"><a id="l02235" name="l02235"></a><span class="lineno"> 2235</span>      <span class="keywordflow">if</span> (sent) {</div>
<div class="line"><a id="l02236" name="l02236"></a><span class="lineno"> 2236</span>        <a class="code hl_function" href="net_8c.html#a6b355153e3bba3af3df1e72f33ced85c">coap_cancel</a>(context, sent);</div>
<div class="line"><a id="l02237" name="l02237"></a><span class="lineno"> 2237</span> </div>
<div class="line"><a id="l02238" name="l02238"></a><span class="lineno"> 2238</span>        <span class="keywordflow">if</span>(sent-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a>-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a0d5796b82924c69852860053020d0684">type</a>==<a class="code hl_define" href="pdu_8h.html#ab6ad49de4b14e7cf5bd0a2a1a87eef2f">COAP_MESSAGE_CON</a> &amp;&amp; context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a610b7410b2c13c8908590d671243f125">nack_handler</a>)</div>
<div class="line"><a id="l02239" name="l02239"></a><span class="lineno"> 2239</span>          context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a610b7410b2c13c8908590d671243f125">nack_handler</a>(context, sent-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a20ff974763849b7aeaca2cbf6f4b8f70">session</a>, sent-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a>, <a class="code hl_enumvalue" href="coap__io_8h.html#a7ff2bb32137ca684be5539c156bdc418a9add7e23f77f49b0c7199b6cda1ea9c0">COAP_NACK_RST</a>, sent-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#aeded9dd536f54ee47418575711e7dbac">id</a>);</div>
<div class="line"><a id="l02240" name="l02240"></a><span class="lineno"> 2240</span>      }</div>
<div class="line"><a id="l02241" name="l02241"></a><span class="lineno"> 2241</span>      <span class="keywordflow">goto</span> cleanup;</div>
<div class="line"><a id="l02242" name="l02242"></a><span class="lineno"> 2242</span> </div>
<div class="line"><a id="l02243" name="l02243"></a><span class="lineno"> 2243</span>    <span class="keywordflow">case</span> <a class="code hl_define" href="pdu_8h.html#a8d16c2a7f279b2b6517b38d58347dead">COAP_MESSAGE_NON</a>:        <span class="comment">/* check for unknown critical options */</span></div>
<div class="line"><a id="l02244" name="l02244"></a><span class="lineno"> 2244</span>      <span class="keywordflow">if</span> (<a class="code hl_function" href="net_8c.html#a9c6736c0418c3adf5e7f6fb76f000cfe">coap_option_check_critical</a>(context, pdu, <a class="code hl_struct" href="structopt__filter.html">opt_filter</a>) == 0)</div>
<div class="line"><a id="l02245" name="l02245"></a><span class="lineno"> 2245</span>        <span class="keywordflow">goto</span> cleanup;</div>
<div class="line"><a id="l02246" name="l02246"></a><span class="lineno"> 2246</span>      <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l02247" name="l02247"></a><span class="lineno"> 2247</span> </div>
<div class="line"><a id="l02248" name="l02248"></a><span class="lineno"> 2248</span>    <span class="keywordflow">case</span> <a class="code hl_define" href="pdu_8h.html#ab6ad49de4b14e7cf5bd0a2a1a87eef2f">COAP_MESSAGE_CON</a>:        <span class="comment">/* check for unknown critical options */</span></div>
<div class="line"><a id="l02249" name="l02249"></a><span class="lineno"> 2249</span>      <span class="keywordflow">if</span> (<a class="code hl_function" href="net_8c.html#a9c6736c0418c3adf5e7f6fb76f000cfe">coap_option_check_critical</a>(context, pdu, <a class="code hl_struct" href="structopt__filter.html">opt_filter</a>) == 0) {</div>
<div class="line"><a id="l02250" name="l02250"></a><span class="lineno"> 2250</span> </div>
<div class="line"><a id="l02251" name="l02251"></a><span class="lineno"> 2251</span>        <span class="comment">/* FIXME: send response only if we have received a request. Otherwise,</span></div>
<div class="line"><a id="l02252" name="l02252"></a><span class="lineno"> 2252</span><span class="comment">         * send RST. */</span></div>
<div class="line"><a id="l02253" name="l02253"></a><span class="lineno"> 2253</span>        response =</div>
<div class="line"><a id="l02254" name="l02254"></a><span class="lineno"> 2254</span>          <a class="code hl_function" href="net_8c.html#aa54bb684429ee455f119fc5fb1feb197">coap_new_error_response</a>(pdu, <a class="code hl_define" href="pdu_8h.html#a651de743c1ff3168c875820cf327b1d6">COAP_RESPONSE_CODE</a>(402), <a class="code hl_struct" href="structopt__filter.html">opt_filter</a>);</div>
<div class="line"><a id="l02255" name="l02255"></a><span class="lineno"> 2255</span> </div>
<div class="line"><a id="l02256" name="l02256"></a><span class="lineno"> 2256</span>        <span class="keywordflow">if</span> (!response) {</div>
<div class="line"><a id="l02257" name="l02257"></a><span class="lineno"> 2257</span>          <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446a8f6fe15bfe15104da6d1b360194a5400">LOG_WARNING</a>,</div>
<div class="line"><a id="l02258" name="l02258"></a><span class="lineno"> 2258</span>                   <span class="stringliteral">&quot;coap_dispatch: cannot create error response\n&quot;</span>);</div>
<div class="line"><a id="l02259" name="l02259"></a><span class="lineno"> 2259</span>        } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l02260" name="l02260"></a><span class="lineno"> 2260</span>          <span class="keywordflow">if</span> (<a class="code hl_function" href="net_8c.html#ab0b0b5db03427c4313c01ec2b12cf8ed">coap_send</a>(session, response) == <a class="code hl_define" href="pdu_8h.html#afe70beb6b87ece4aca2d2735c759c625">COAP_INVALID_TID</a>)</div>
<div class="line"><a id="l02261" name="l02261"></a><span class="lineno"> 2261</span>            <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446a8f6fe15bfe15104da6d1b360194a5400">LOG_WARNING</a>, <span class="stringliteral">&quot;coap_dispatch: error sending response\n&quot;</span>);</div>
<div class="line"><a id="l02262" name="l02262"></a><span class="lineno"> 2262</span>        }</div>
<div class="line"><a id="l02263" name="l02263"></a><span class="lineno"> 2263</span> </div>
<div class="line"><a id="l02264" name="l02264"></a><span class="lineno"> 2264</span>        <span class="keywordflow">goto</span> cleanup;</div>
<div class="line"><a id="l02265" name="l02265"></a><span class="lineno"> 2265</span>      }</div>
<div class="line"><a id="l02266" name="l02266"></a><span class="lineno"> 2266</span>    <span class="keywordflow">default</span>: <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l02267" name="l02267"></a><span class="lineno"> 2267</span>  }</div>
<div class="line"><a id="l02268" name="l02268"></a><span class="lineno"> 2268</span> </div>
<div class="line"><a id="l02269" name="l02269"></a><span class="lineno"> 2269</span>  <span class="comment">/* Pass message to upper layer if a specific handler was</span></div>
<div class="line"><a id="l02270" name="l02270"></a><span class="lineno"> 2270</span><span class="comment">    * registered for a request that should be handled locally. */</span></div>
<div class="line"><a id="l02271" name="l02271"></a><span class="lineno"> 2271</span>  <span class="keywordflow">if</span> (<a class="code hl_define" href="pdu_8h.html#a8046a72f69381eb21e87ece231506137">COAP_PDU_IS_SIGNALING</a>(pdu))</div>
<div class="line"><a id="l02272" name="l02272"></a><span class="lineno"> 2272</span>    <a class="code hl_function" href="net_8c.html#ac4cbcfd073489b57805db665ce3d0681">handle_signaling</a>(context, session, pdu);</div>
<div class="line"><a id="l02273" name="l02273"></a><span class="lineno"> 2273</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code hl_define" href="pdu_8h.html#ae2fb86807d5c6e38795a45b5c6c4374f">COAP_PDU_IS_REQUEST</a>(pdu))</div>
<div class="line"><a id="l02274" name="l02274"></a><span class="lineno"> 2274</span>    <a class="code hl_function" href="net_8c.html#a1a280312c4bad55cf10243b9b9c3e966">handle_request</a>(context, session, pdu);</div>
<div class="line"><a id="l02275" name="l02275"></a><span class="lineno"> 2275</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code hl_define" href="pdu_8h.html#a0010b10bed3bccbb58cf47640ca61271">COAP_PDU_IS_RESPONSE</a>(pdu))</div>
<div class="line"><a id="l02276" name="l02276"></a><span class="lineno"> 2276</span>    <a class="code hl_function" href="net_8c.html#af838d89087ad96495f8ed7f1a9297168">handle_response</a>(context, session, sent ? sent-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">pdu</a> : NULL, pdu);</div>
<div class="line"><a id="l02277" name="l02277"></a><span class="lineno"> 2277</span>  <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l02278" name="l02278"></a><span class="lineno"> 2278</span>    <span class="keywordflow">if</span> (<a class="code hl_define" href="pdu_8h.html#a7736ba4d5c9603785584582e1b4c9f94">COAP_PDU_IS_EMPTY</a>(pdu)) {</div>
<div class="line"><a id="l02279" name="l02279"></a><span class="lineno"> 2279</span>      <span class="keywordflow">if</span> (context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a92b6634824600447d806e34e9cf58f9e">ping_handler</a>) {</div>
<div class="line"><a id="l02280" name="l02280"></a><span class="lineno"> 2280</span>        context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a92b6634824600447d806e34e9cf58f9e">ping_handler</a>(context, session,</div>
<div class="line"><a id="l02281" name="l02281"></a><span class="lineno"> 2281</span>          pdu, pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a65877a685b1f3428d3dc872af075ddc1">tid</a>);</div>
<div class="line"><a id="l02282" name="l02282"></a><span class="lineno"> 2282</span>      }</div>
<div class="line"><a id="l02283" name="l02283"></a><span class="lineno"> 2283</span>    }</div>
<div class="line"><a id="l02284" name="l02284"></a><span class="lineno"> 2284</span>    <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, <span class="stringliteral">&quot;dropped message with invalid code (%d.%02d)\n&quot;</span>,</div>
<div class="line"><a id="l02285" name="l02285"></a><span class="lineno"> 2285</span>             <a class="code hl_define" href="pdu_8h.html#a69a63fe3b38001521e87a71b2011750b">COAP_RESPONSE_CLASS</a>(pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a69c774f85355eeacc4742355527a8097">code</a>),</div>
<div class="line"><a id="l02286" name="l02286"></a><span class="lineno"> 2286</span>      pdu-&gt;<a class="code hl_variable" href="structcoap__pdu__t.html#a69c774f85355eeacc4742355527a8097">code</a> &amp; 0x1f);</div>
<div class="line"><a id="l02287" name="l02287"></a><span class="lineno"> 2287</span> </div>
<div class="line"><a id="l02288" name="l02288"></a><span class="lineno"> 2288</span>    <span class="keywordflow">if</span> (!<a class="code hl_function" href="address_8c.html#a5b47d6fe47a54a0798eddb9ea77005ea">coap_is_mcast</a>(&amp;session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a527f7977596333c89e623c3deb621d25">local_addr</a>)) {</div>
<div class="line"><a id="l02289" name="l02289"></a><span class="lineno"> 2289</span>      <span class="keywordflow">if</span> (<a class="code hl_define" href="pdu_8h.html#a7736ba4d5c9603785584582e1b4c9f94">COAP_PDU_IS_EMPTY</a>(pdu)) {</div>
<div class="line"><a id="l02290" name="l02290"></a><span class="lineno"> 2290</span>        <span class="keywordflow">if</span> (session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a62089dd9c72836d322ae0ce0d0e7114f">proto</a> != <a class="code hl_define" href="pdu_8h.html#a1dd5fe6cc335ea31d49f3eb469a5990a">COAP_PROTO_TCP</a> &amp;&amp; session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a62089dd9c72836d322ae0ce0d0e7114f">proto</a> != <a class="code hl_define" href="pdu_8h.html#a6c9a1dd7b311e5a420e3a7c36b918a02">COAP_PROTO_TLS</a>) {</div>
<div class="line"><a id="l02291" name="l02291"></a><span class="lineno"> 2291</span>          <a class="code hl_typedef" href="group__clock.html#ga97ff1502e211b4ee6c3f15a598833438">coap_tick_t</a> now;</div>
<div class="line"><a id="l02292" name="l02292"></a><span class="lineno"> 2292</span>          <a class="code hl_function" href="group__clock.html#ga350826988e63ff446a2a84034ecdf43d">coap_ticks</a>(&amp;now);</div>
<div class="line"><a id="l02293" name="l02293"></a><span class="lineno"> 2293</span>          <span class="keywordflow">if</span> (session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#ad69783e1a9bc85a43d0bd6511de2c6a0">last_tx_rst</a> + <a class="code hl_define" href="group__clock.html#gabf672e8aaf725f9ccbc4fc0aa202a5bb">COAP_TICKS_PER_SECOND</a>/4 &lt; now) {</div>
<div class="line"><a id="l02294" name="l02294"></a><span class="lineno"> 2294</span>            <a class="code hl_function" href="net_8c.html#a6aa830b46188549b51773f724eb8e752">coap_send_message_type</a>(session, pdu, <a class="code hl_define" href="pdu_8h.html#a9ca373ecc6b3ea33fa62791ce3d58c9a">COAP_MESSAGE_RST</a>);</div>
<div class="line"><a id="l02295" name="l02295"></a><span class="lineno"> 2295</span>            session-&gt;<a class="code hl_variable" href="structcoap__session__t.html#ad69783e1a9bc85a43d0bd6511de2c6a0">last_tx_rst</a> = now;</div>
<div class="line"><a id="l02296" name="l02296"></a><span class="lineno"> 2296</span>          }</div>
<div class="line"><a id="l02297" name="l02297"></a><span class="lineno"> 2297</span>        }</div>
<div class="line"><a id="l02298" name="l02298"></a><span class="lineno"> 2298</span>      }</div>
<div class="line"><a id="l02299" name="l02299"></a><span class="lineno"> 2299</span>      <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l02300" name="l02300"></a><span class="lineno"> 2300</span>        <a class="code hl_function" href="net_8c.html#a6aa830b46188549b51773f724eb8e752">coap_send_message_type</a>(session, pdu, <a class="code hl_define" href="pdu_8h.html#a9ca373ecc6b3ea33fa62791ce3d58c9a">COAP_MESSAGE_RST</a>);</div>
<div class="line"><a id="l02301" name="l02301"></a><span class="lineno"> 2301</span>      }</div>
<div class="line"><a id="l02302" name="l02302"></a><span class="lineno"> 2302</span>    }</div>
<div class="line"><a id="l02303" name="l02303"></a><span class="lineno"> 2303</span>  }</div>
<div class="line"><a id="l02304" name="l02304"></a><span class="lineno"> 2304</span> </div>
<div class="line"><a id="l02305" name="l02305"></a><span class="lineno"> 2305</span>cleanup:</div>
<div class="line"><a id="l02306" name="l02306"></a><span class="lineno"> 2306</span>  <a class="code hl_function" href="net_8c.html#a44c39a2314035989d3e07b9d9328e08c">coap_delete_node</a>(sent);</div>
<div class="line"><a id="l02307" name="l02307"></a><span class="lineno"> 2307</span>}</div>
</div>
<div class="line"><a id="l02308" name="l02308"></a><span class="lineno"> 2308</span> </div>
<div class="line"><a id="l02309" name="l02309"></a><span class="lineno"> 2309</span><span class="keywordtype">int</span></div>
<div class="foldopen" id="foldopen02310" data-start="{" data-end="}">
<div class="line"><a id="l02310" name="l02310"></a><span class="lineno"><a class="line" href="net_8c.html#a5e2cee998ccf618ac07aa54f5e5f8743"> 2310</a></span><a class="code hl_function" href="net_8c.html#a5e2cee998ccf618ac07aa54f5e5f8743">coap_handle_event</a>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *context, <a class="code hl_typedef" href="group__events.html#ga75a08ceb9a855937288ac3996656c872">coap_event_t</a> event, <a class="code hl_struct" href="structcoap__session__t.html">coap_session_t</a> *session) {</div>
<div class="line"><a id="l02311" name="l02311"></a><span class="lineno"> 2311</span>  <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, <span class="stringliteral">&quot;***EVENT: 0x%04x\n&quot;</span>, event);</div>
<div class="line"><a id="l02312" name="l02312"></a><span class="lineno"> 2312</span> </div>
<div class="line"><a id="l02313" name="l02313"></a><span class="lineno"> 2313</span>  <span class="keywordflow">if</span> (context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#acaa625e1c87b88a1dc48bd0d895185d9">handle_event</a>) {</div>
<div class="line"><a id="l02314" name="l02314"></a><span class="lineno"> 2314</span>    <span class="keywordflow">return</span> context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#acaa625e1c87b88a1dc48bd0d895185d9">handle_event</a>(context, event, session);</div>
<div class="line"><a id="l02315" name="l02315"></a><span class="lineno"> 2315</span>  } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l02316" name="l02316"></a><span class="lineno"> 2316</span>    <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l02317" name="l02317"></a><span class="lineno"> 2317</span>  }</div>
<div class="line"><a id="l02318" name="l02318"></a><span class="lineno"> 2318</span>}</div>
</div>
<div class="line"><a id="l02319" name="l02319"></a><span class="lineno"> 2319</span> </div>
<div class="line"><a id="l02320" name="l02320"></a><span class="lineno"> 2320</span><span class="keywordtype">int</span></div>
<div class="foldopen" id="foldopen02321" data-start="{" data-end="}">
<div class="line"><a id="l02321" name="l02321"></a><span class="lineno"><a class="line" href="net_8c.html#a231e9a81ac7c03c3e5c251824a76d7b9"> 2321</a></span><a class="code hl_function" href="net_8c.html#a231e9a81ac7c03c3e5c251824a76d7b9">coap_can_exit</a>(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *context) {</div>
<div class="line"><a id="l02322" name="l02322"></a><span class="lineno"> 2322</span>  <a class="code hl_struct" href="structcoap__endpoint__t.html">coap_endpoint_t</a> *ep;</div>
<div class="line"><a id="l02323" name="l02323"></a><span class="lineno"> 2323</span>  <a class="code hl_struct" href="structcoap__session__t.html">coap_session_t</a> *s;</div>
<div class="line"><a id="l02324" name="l02324"></a><span class="lineno"> 2324</span>  <span class="keywordflow">if</span> (!context)</div>
<div class="line"><a id="l02325" name="l02325"></a><span class="lineno"> 2325</span>    <span class="keywordflow">return</span> 1;</div>
<div class="line"><a id="l02326" name="l02326"></a><span class="lineno"> 2326</span>  <span class="keywordflow">if</span> (context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a>)</div>
<div class="line"><a id="l02327" name="l02327"></a><span class="lineno"> 2327</span>    <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l02328" name="l02328"></a><span class="lineno"> 2328</span>  <a class="code hl_define" href="utlist_8h.html#a487c0ce49f397e1743caae16a797e4bb">LL_FOREACH</a>(context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#ab7d5935f4a3e1c94fa6bb12bf6400006">endpoint</a>, ep) {</div>
<div class="line"><a id="l02329" name="l02329"></a><span class="lineno"> 2329</span>    <a class="code hl_define" href="utlist_8h.html#a487c0ce49f397e1743caae16a797e4bb">LL_FOREACH</a>(ep-&gt;<a class="code hl_variable" href="structcoap__endpoint__t.html#a6032778926bccf2e0c4f093eff03bb51">sessions</a>, s) {</div>
<div class="line"><a id="l02330" name="l02330"></a><span class="lineno"> 2330</span>      <span class="keywordflow">if</span> (s-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a84e90d62fbc324bdf21041269befe30d">delayqueue</a>)</div>
<div class="line"><a id="l02331" name="l02331"></a><span class="lineno"> 2331</span>        <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l02332" name="l02332"></a><span class="lineno"> 2332</span>    }</div>
<div class="line"><a id="l02333" name="l02333"></a><span class="lineno"> 2333</span>  }</div>
<div class="line"><a id="l02334" name="l02334"></a><span class="lineno"> 2334</span>  <a class="code hl_define" href="utlist_8h.html#a487c0ce49f397e1743caae16a797e4bb">LL_FOREACH</a>(context-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a5984a41d68fae2a68703f6afd940671f">sessions</a>, s) {</div>
<div class="line"><a id="l02335" name="l02335"></a><span class="lineno"> 2335</span>    <span class="keywordflow">if</span> (s-&gt;<a class="code hl_variable" href="structcoap__session__t.html#a84e90d62fbc324bdf21041269befe30d">delayqueue</a>)</div>
<div class="line"><a id="l02336" name="l02336"></a><span class="lineno"> 2336</span>      <span class="keywordflow">return</span> 0;</div>
<div class="line"><a id="l02337" name="l02337"></a><span class="lineno"> 2337</span>  }</div>
<div class="line"><a id="l02338" name="l02338"></a><span class="lineno"> 2338</span>  <span class="keywordflow">return</span> 1;</div>
<div class="line"><a id="l02339" name="l02339"></a><span class="lineno"> 2339</span>}</div>
</div>
<div class="line"><a id="l02340" name="l02340"></a><span class="lineno"> 2340</span> </div>
<div class="line"><a id="l02341" name="l02341"></a><span class="lineno"><a class="line" href="net_8c.html#a73dd0093b2de859341ebbb375b0efad5"> 2341</a></span><span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code hl_variable" href="net_8c.html#a73dd0093b2de859341ebbb375b0efad5">coap_started</a> = 0;</div>
<div class="line"><a id="l02342" name="l02342"></a><span class="lineno"> 2342</span> </div>
<div class="foldopen" id="foldopen02343" data-start="{" data-end="}">
<div class="line"><a id="l02343" name="l02343"></a><span class="lineno"><a class="line" href="net_8c.html#aceceb550566e0ab9e184d09604a73bb6"> 2343</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="net_8c.html#aceceb550566e0ab9e184d09604a73bb6">coap_startup</a>(<span class="keywordtype">void</span>) {</div>
<div class="line"><a id="l02344" name="l02344"></a><span class="lineno"> 2344</span>  <span class="keywordflow">if</span> (<a class="code hl_variable" href="net_8c.html#a73dd0093b2de859341ebbb375b0efad5">coap_started</a>)</div>
<div class="line"><a id="l02345" name="l02345"></a><span class="lineno"> 2345</span>    <span class="keywordflow">return</span>;</div>
<div class="line"><a id="l02346" name="l02346"></a><span class="lineno"> 2346</span>  <a class="code hl_variable" href="net_8c.html#a73dd0093b2de859341ebbb375b0efad5">coap_started</a> = 1;</div>
<div class="line"><a id="l02347" name="l02347"></a><span class="lineno"> 2347</span><span class="preprocessor">#if defined(HAVE_WINSOCK2_H)</span></div>
<div class="line"><a id="l02348" name="l02348"></a><span class="lineno"> 2348</span>  WORD wVersionRequested = MAKEWORD(2, 2);</div>
<div class="line"><a id="l02349" name="l02349"></a><span class="lineno"> 2349</span>  WSADATA wsaData;</div>
<div class="line"><a id="l02350" name="l02350"></a><span class="lineno"> 2350</span>  WSAStartup(wVersionRequested, &amp;wsaData);</div>
<div class="line"><a id="l02351" name="l02351"></a><span class="lineno"> 2351</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02352" name="l02352"></a><span class="lineno"> 2352</span>  <a class="code hl_function" href="group__clock.html#ga4722a7e40ba99c4d3feba19de1b980be">coap_clock_init</a>();</div>
<div class="line"><a id="l02353" name="l02353"></a><span class="lineno"> 2353</span><span class="preprocessor">#if defined(WITH_LWIP)</span></div>
<div class="line"><a id="l02354" name="l02354"></a><span class="lineno"> 2354</span>  <a class="code hl_define" href="group__prng.html#gaa32e46211968b5a4936d4c122b7fd44c">prng_init</a>(LWIP_RAND());</div>
<div class="line"><a id="l02355" name="l02355"></a><span class="lineno"> 2355</span><span class="preprocessor">#elif defined(WITH_CONTIKI)</span></div>
<div class="line"><a id="l02356" name="l02356"></a><span class="lineno"> 2356</span>  <a class="code hl_define" href="group__prng.html#gaa32e46211968b5a4936d4c122b7fd44c">prng_init</a>(0);</div>
<div class="line"><a id="l02357" name="l02357"></a><span class="lineno"> 2357</span><span class="preprocessor">#elif !defined(_WIN32)</span></div>
<div class="line"><a id="l02358" name="l02358"></a><span class="lineno"> 2358</span>  <a class="code hl_define" href="group__prng.html#gaa32e46211968b5a4936d4c122b7fd44c">prng_init</a>(0);</div>
<div class="line"><a id="l02359" name="l02359"></a><span class="lineno"> 2359</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02360" name="l02360"></a><span class="lineno"> 2360</span>  <a class="code hl_function" href="group__dtls__internal.html#ga1e81d904e13ccf3af6a56ab3ebdc8a34">coap_dtls_startup</a>();</div>
<div class="line"><a id="l02361" name="l02361"></a><span class="lineno"> 2361</span>}</div>
</div>
<div class="line"><a id="l02362" name="l02362"></a><span class="lineno"> 2362</span> </div>
<div class="foldopen" id="foldopen02363" data-start="{" data-end="}">
<div class="line"><a id="l02363" name="l02363"></a><span class="lineno"><a class="line" href="net_8c.html#a5d1fb0b44497970b0f75fa0b38570a82"> 2363</a></span><span class="keywordtype">void</span> <a class="code hl_function" href="net_8c.html#a5d1fb0b44497970b0f75fa0b38570a82">coap_cleanup</a>(<span class="keywordtype">void</span>) {</div>
<div class="line"><a id="l02364" name="l02364"></a><span class="lineno"> 2364</span><span class="preprocessor">#if defined(HAVE_WINSOCK2_H)</span></div>
<div class="line"><a id="l02365" name="l02365"></a><span class="lineno"> 2365</span>  WSACleanup();</div>
<div class="line"><a id="l02366" name="l02366"></a><span class="lineno"> 2366</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l02367" name="l02367"></a><span class="lineno"> 2367</span>}</div>
</div>
<div class="line"><a id="l02368" name="l02368"></a><span class="lineno"> 2368</span> </div>
<div class="line"><a id="l02369" name="l02369"></a><span class="lineno"> 2369</span><span class="preprocessor">#ifdef WITH_CONTIKI</span></div>
<div class="line"><a id="l02370" name="l02370"></a><span class="lineno"> 2370</span> </div>
<div class="line"><a id="l02371" name="l02371"></a><span class="lineno"> 2371</span><span class="comment">/*---------------------------------------------------------------------------*/</span></div>
<div class="line"><a id="l02372" name="l02372"></a><span class="lineno"> 2372</span><span class="comment">/* CoAP message retransmission */</span></div>
<div class="line"><a id="l02373" name="l02373"></a><span class="lineno"> 2373</span><span class="comment">/*---------------------------------------------------------------------------*/</span></div>
<div class="line"><a id="l02374" name="l02374"></a><span class="lineno"> 2374</span>PROCESS_THREAD(coap_retransmit_process, ev, data) {</div>
<div class="line"><a id="l02375" name="l02375"></a><span class="lineno"> 2375</span>  <a class="code hl_typedef" href="group__clock.html#ga97ff1502e211b4ee6c3f15a598833438">coap_tick_t</a> now;</div>
<div class="line"><a id="l02376" name="l02376"></a><span class="lineno"> 2376</span>  <a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> *nextpdu;</div>
<div class="line"><a id="l02377" name="l02377"></a><span class="lineno"> 2377</span> </div>
<div class="line"><a id="l02378" name="l02378"></a><span class="lineno"> 2378</span>  PROCESS_BEGIN();</div>
<div class="line"><a id="l02379" name="l02379"></a><span class="lineno"> 2379</span> </div>
<div class="line"><a id="l02380" name="l02380"></a><span class="lineno"> 2380</span>  <a class="code hl_define" href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a>(<a class="code hl_enumvalue" href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a>, <span class="stringliteral">&quot;Started retransmit process\n&quot;</span>);</div>
<div class="line"><a id="l02381" name="l02381"></a><span class="lineno"> 2381</span> </div>
<div class="line"><a id="l02382" name="l02382"></a><span class="lineno"> 2382</span>  <span class="keywordflow">while</span> (1) {</div>
<div class="line"><a id="l02383" name="l02383"></a><span class="lineno"> 2383</span>    PROCESS_YIELD();</div>
<div class="line"><a id="l02384" name="l02384"></a><span class="lineno"> 2384</span>    <span class="keywordflow">if</span> (ev == PROCESS_EVENT_TIMER) {</div>
<div class="line"><a id="l02385" name="l02385"></a><span class="lineno"> 2385</span>      <span class="keywordflow">if</span> (etimer_expired(&amp;the_coap_context.retransmit_timer)) {</div>
<div class="line"><a id="l02386" name="l02386"></a><span class="lineno"> 2386</span> </div>
<div class="line"><a id="l02387" name="l02387"></a><span class="lineno"> 2387</span>        nextpdu = <a class="code hl_function" href="net_8c.html#a4a9f7d31eafd7d82776f9b1a9291eea0">coap_peek_next</a>(&amp;the_coap_context);</div>
<div class="line"><a id="l02388" name="l02388"></a><span class="lineno"> 2388</span> </div>
<div class="line"><a id="l02389" name="l02389"></a><span class="lineno"> 2389</span>        <a class="code hl_function" href="group__clock.html#ga350826988e63ff446a2a84034ecdf43d">coap_ticks</a>(&amp;now);</div>
<div class="line"><a id="l02390" name="l02390"></a><span class="lineno"> 2390</span>        <span class="keywordflow">while</span> (nextpdu &amp;&amp; nextpdu-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#ab5edd7b3b3ddd98d8356febbd4726e7c">t</a> &lt;= now) {</div>
<div class="line"><a id="l02391" name="l02391"></a><span class="lineno"> 2391</span>          <a class="code hl_function" href="net_8c.html#a9900c032b74bd57f67d489484a2b3207">coap_retransmit</a>(&amp;the_coap_context, <a class="code hl_function" href="net_8c.html#a740acba1e579ecec3c67eca3b7522164">coap_pop_next</a>(&amp;the_coap_context));</div>
<div class="line"><a id="l02392" name="l02392"></a><span class="lineno"> 2392</span>          nextpdu = <a class="code hl_function" href="net_8c.html#a4a9f7d31eafd7d82776f9b1a9291eea0">coap_peek_next</a>(&amp;the_coap_context);</div>
<div class="line"><a id="l02393" name="l02393"></a><span class="lineno"> 2393</span>        }</div>
<div class="line"><a id="l02394" name="l02394"></a><span class="lineno"> 2394</span> </div>
<div class="line"><a id="l02395" name="l02395"></a><span class="lineno"> 2395</span>        <span class="comment">/* need to set timer to some value even if no nextpdu is available */</span></div>
<div class="line"><a id="l02396" name="l02396"></a><span class="lineno"> 2396</span>        etimer_set(&amp;the_coap_context.retransmit_timer,</div>
<div class="line"><a id="l02397" name="l02397"></a><span class="lineno"> 2397</span>          nextpdu ? nextpdu-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#ab5edd7b3b3ddd98d8356febbd4726e7c">t</a> - now : 0xFFFF);</div>
<div class="line"><a id="l02398" name="l02398"></a><span class="lineno"> 2398</span>      }</div>
<div class="line"><a id="l02399" name="l02399"></a><span class="lineno"> 2399</span><span class="preprocessor">#ifndef WITHOUT_OBSERVE</span></div>
<div class="line"><a id="l02400" name="l02400"></a><span class="lineno"> 2400</span>      <span class="keywordflow">if</span> (etimer_expired(&amp;the_coap_context.notify_timer)) {</div>
<div class="line"><a id="l02401" name="l02401"></a><span class="lineno"> 2401</span>        <a class="code hl_function" href="resource_8c.html#a579bcb559463d3a872831c18d8d9a1c1">coap_check_notify</a>(&amp;the_coap_context);</div>
<div class="line"><a id="l02402" name="l02402"></a><span class="lineno"> 2402</span>        etimer_reset(&amp;the_coap_context.notify_timer);</div>
<div class="line"><a id="l02403" name="l02403"></a><span class="lineno"> 2403</span>      }</div>
<div class="line"><a id="l02404" name="l02404"></a><span class="lineno"> 2404</span><span class="preprocessor">#endif </span><span class="comment">/* WITHOUT_OBSERVE */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l02405" name="l02405"></a><span class="lineno"> 2405</span>    }</div>
<div class="line"><a id="l02406" name="l02406"></a><span class="lineno"> 2406</span>  }</div>
<div class="line"><a id="l02407" name="l02407"></a><span class="lineno"> 2407</span> </div>
<div class="line"><a id="l02408" name="l02408"></a><span class="lineno"> 2408</span>  PROCESS_END();</div>
<div class="line"><a id="l02409" name="l02409"></a><span class="lineno"> 2409</span>}</div>
<div class="line"><a id="l02410" name="l02410"></a><span class="lineno"> 2410</span><span class="comment">/*---------------------------------------------------------------------------*/</span></div>
<div class="line"><a id="l02411" name="l02411"></a><span class="lineno"> 2411</span> </div>
<div class="line"><a id="l02412" name="l02412"></a><span class="lineno"> 2412</span><span class="preprocessor">#endif </span><span class="comment">/* WITH_CONTIKI */</span><span class="preprocessor"></span></div>
<div class="line"><a id="l02413" name="l02413"></a><span class="lineno"> 2413</span> </div>
<div class="line"><a id="l02414" name="l02414"></a><span class="lineno"> 2414</span><span class="preprocessor">#ifdef WITH_LWIP</span></div>
<div class="line"><a id="l02415" name="l02415"></a><span class="lineno"> 2415</span><span class="comment">/* FIXME: retransmits that are not required any more due to incoming packages</span></div>
<div class="line"><a id="l02416" name="l02416"></a><span class="lineno"> 2416</span><span class="comment"> * do *not* get cleared at the moment, the wakeup when the transmission is due</span></div>
<div class="line"><a id="l02417" name="l02417"></a><span class="lineno"> 2417</span><span class="comment"> * is silently accepted. this is mainly due to the fact that the required</span></div>
<div class="line"><a id="l02418" name="l02418"></a><span class="lineno"> 2418</span><span class="comment"> * checks are similar in two places in the code (when receiving ACK and RST)</span></div>
<div class="line"><a id="l02419" name="l02419"></a><span class="lineno"> 2419</span><span class="comment"> * and that they cause more than one patch chunk, as it must be first checked</span></div>
<div class="line"><a id="l02420" name="l02420"></a><span class="lineno"> 2420</span><span class="comment"> * whether the sendqueue item to be dropped is the next one pending, and later</span></div>
<div class="line"><a id="l02421" name="l02421"></a><span class="lineno"> 2421</span><span class="comment"> * the restart function has to be called. nothing insurmountable, but it can</span></div>
<div class="line"><a id="l02422" name="l02422"></a><span class="lineno"> 2422</span><span class="comment"> * also be implemented when things have stabilized, and the performance</span></div>
<div class="line"><a id="l02423" name="l02423"></a><span class="lineno"> 2423</span><span class="comment"> * penality is minimal</span></div>
<div class="line"><a id="l02424" name="l02424"></a><span class="lineno"> 2424</span><span class="comment"> *</span></div>
<div class="line"><a id="l02425" name="l02425"></a><span class="lineno"> 2425</span><span class="comment"> * also, this completely ignores COAP_RESOURCE_CHECK_TIME.</span></div>
<div class="line"><a id="l02426" name="l02426"></a><span class="lineno"> 2426</span><span class="comment"> * */</span></div>
<div class="line"><a id="l02427" name="l02427"></a><span class="lineno"> 2427</span> </div>
<div class="line"><a id="l02428" name="l02428"></a><span class="lineno"> 2428</span><span class="keyword">static</span> <span class="keywordtype">void</span> coap_retransmittimer_execute(<span class="keywordtype">void</span> *arg) {</div>
<div class="line"><a id="l02429" name="l02429"></a><span class="lineno"> 2429</span>  <a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *ctx = (<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a>*)arg;</div>
<div class="line"><a id="l02430" name="l02430"></a><span class="lineno"> 2430</span>  <a class="code hl_typedef" href="group__clock.html#ga97ff1502e211b4ee6c3f15a598833438">coap_tick_t</a> now;</div>
<div class="line"><a id="l02431" name="l02431"></a><span class="lineno"> 2431</span>  <a class="code hl_typedef" href="group__clock.html#ga97ff1502e211b4ee6c3f15a598833438">coap_tick_t</a> elapsed;</div>
<div class="line"><a id="l02432" name="l02432"></a><span class="lineno"> 2432</span>  <a class="code hl_struct" href="structcoap__queue__t.html">coap_queue_t</a> *nextinqueue;</div>
<div class="line"><a id="l02433" name="l02433"></a><span class="lineno"> 2433</span> </div>
<div class="line"><a id="l02434" name="l02434"></a><span class="lineno"> 2434</span>  ctx-&gt;timer_configured = 0;</div>
<div class="line"><a id="l02435" name="l02435"></a><span class="lineno"> 2435</span> </div>
<div class="line"><a id="l02436" name="l02436"></a><span class="lineno"> 2436</span>  <a class="code hl_function" href="group__clock.html#ga350826988e63ff446a2a84034ecdf43d">coap_ticks</a>(&amp;now);</div>
<div class="line"><a id="l02437" name="l02437"></a><span class="lineno"> 2437</span> </div>
<div class="line"><a id="l02438" name="l02438"></a><span class="lineno"> 2438</span>  elapsed = now - ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a080dc026c9eec48849d0140b433e04bb">sendqueue_basetime</a>; <span class="comment">/* that&#39;s positive for sure, and unless we haven&#39;t been called for a complete wrapping cycle, did not wrap */</span></div>
<div class="line"><a id="l02439" name="l02439"></a><span class="lineno"> 2439</span> </div>
<div class="line"><a id="l02440" name="l02440"></a><span class="lineno"> 2440</span>  nextinqueue = <a class="code hl_function" href="net_8c.html#a4a9f7d31eafd7d82776f9b1a9291eea0">coap_peek_next</a>(ctx);</div>
<div class="line"><a id="l02441" name="l02441"></a><span class="lineno"> 2441</span>  <span class="keywordflow">while</span> (nextinqueue != NULL) {</div>
<div class="line"><a id="l02442" name="l02442"></a><span class="lineno"> 2442</span>    <span class="keywordflow">if</span> (nextinqueue-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#ab5edd7b3b3ddd98d8356febbd4726e7c">t</a> &gt; elapsed) {</div>
<div class="line"><a id="l02443" name="l02443"></a><span class="lineno"> 2443</span>      nextinqueue-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#ab5edd7b3b3ddd98d8356febbd4726e7c">t</a> -= elapsed;</div>
<div class="line"><a id="l02444" name="l02444"></a><span class="lineno"> 2444</span>      <span class="keywordflow">break</span>;</div>
<div class="line"><a id="l02445" name="l02445"></a><span class="lineno"> 2445</span>    } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l02446" name="l02446"></a><span class="lineno"> 2446</span>      elapsed -= nextinqueue-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#ab5edd7b3b3ddd98d8356febbd4726e7c">t</a>;</div>
<div class="line"><a id="l02447" name="l02447"></a><span class="lineno"> 2447</span>      <a class="code hl_function" href="net_8c.html#a9900c032b74bd57f67d489484a2b3207">coap_retransmit</a>(ctx, <a class="code hl_function" href="net_8c.html#a740acba1e579ecec3c67eca3b7522164">coap_pop_next</a>(ctx));</div>
<div class="line"><a id="l02448" name="l02448"></a><span class="lineno"> 2448</span>      nextinqueue = <a class="code hl_function" href="net_8c.html#a4a9f7d31eafd7d82776f9b1a9291eea0">coap_peek_next</a>(ctx);</div>
<div class="line"><a id="l02449" name="l02449"></a><span class="lineno"> 2449</span>    }</div>
<div class="line"><a id="l02450" name="l02450"></a><span class="lineno"> 2450</span>  }</div>
<div class="line"><a id="l02451" name="l02451"></a><span class="lineno"> 2451</span> </div>
<div class="line"><a id="l02452" name="l02452"></a><span class="lineno"> 2452</span>  ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a080dc026c9eec48849d0140b433e04bb">sendqueue_basetime</a> = now;</div>
<div class="line"><a id="l02453" name="l02453"></a><span class="lineno"> 2453</span> </div>
<div class="line"><a id="l02454" name="l02454"></a><span class="lineno"> 2454</span>  coap_retransmittimer_restart(ctx);</div>
<div class="line"><a id="l02455" name="l02455"></a><span class="lineno"> 2455</span>}</div>
<div class="line"><a id="l02456" name="l02456"></a><span class="lineno"> 2456</span> </div>
<div class="line"><a id="l02457" name="l02457"></a><span class="lineno"> 2457</span><span class="keyword">static</span> <span class="keywordtype">void</span> coap_retransmittimer_restart(<a class="code hl_struct" href="structcoap__context__t.html">coap_context_t</a> *ctx) {</div>
<div class="line"><a id="l02458" name="l02458"></a><span class="lineno"> 2458</span>  <a class="code hl_typedef" href="group__clock.html#ga97ff1502e211b4ee6c3f15a598833438">coap_tick_t</a> now, elapsed, delay;</div>
<div class="line"><a id="l02459" name="l02459"></a><span class="lineno"> 2459</span> </div>
<div class="line"><a id="l02460" name="l02460"></a><span class="lineno"> 2460</span>  <span class="keywordflow">if</span> (ctx-&gt;timer_configured) {</div>
<div class="line"><a id="l02461" name="l02461"></a><span class="lineno"> 2461</span>    printf(<span class="stringliteral">&quot;clearing\n&quot;</span>);</div>
<div class="line"><a id="l02462" name="l02462"></a><span class="lineno"> 2462</span>    sys_untimeout(coap_retransmittimer_execute, (<span class="keywordtype">void</span>*)ctx);</div>
<div class="line"><a id="l02463" name="l02463"></a><span class="lineno"> 2463</span>    ctx-&gt;timer_configured = 0;</div>
<div class="line"><a id="l02464" name="l02464"></a><span class="lineno"> 2464</span>  }</div>
<div class="line"><a id="l02465" name="l02465"></a><span class="lineno"> 2465</span>  <span class="keywordflow">if</span> (ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a> != NULL) {</div>
<div class="line"><a id="l02466" name="l02466"></a><span class="lineno"> 2466</span>    <a class="code hl_function" href="group__clock.html#ga350826988e63ff446a2a84034ecdf43d">coap_ticks</a>(&amp;now);</div>
<div class="line"><a id="l02467" name="l02467"></a><span class="lineno"> 2467</span>    elapsed = now - ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#a080dc026c9eec48849d0140b433e04bb">sendqueue_basetime</a>;</div>
<div class="line"><a id="l02468" name="l02468"></a><span class="lineno"> 2468</span>    <span class="keywordflow">if</span> (ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a>-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#ab5edd7b3b3ddd98d8356febbd4726e7c">t</a> &gt;= elapsed) {</div>
<div class="line"><a id="l02469" name="l02469"></a><span class="lineno"> 2469</span>      delay = ctx-&gt;<a class="code hl_variable" href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">sendqueue</a>-&gt;<a class="code hl_variable" href="structcoap__queue__t.html#ab5edd7b3b3ddd98d8356febbd4726e7c">t</a> - elapsed;</div>
<div class="line"><a id="l02470" name="l02470"></a><span class="lineno"> 2470</span>    } <span class="keywordflow">else</span> {</div>
<div class="line"><a id="l02471" name="l02471"></a><span class="lineno"> 2471</span>      <span class="comment">/* a strange situation, but not completely impossible.</span></div>
<div class="line"><a id="l02472" name="l02472"></a><span class="lineno"> 2472</span><span class="comment">       *</span></div>
<div class="line"><a id="l02473" name="l02473"></a><span class="lineno"> 2473</span><span class="comment">       * this happens, for example, right after</span></div>
<div class="line"><a id="l02474" name="l02474"></a><span class="lineno"> 2474</span><span class="comment">       * coap_retransmittimer_execute, when a retransmission</span></div>
<div class="line"><a id="l02475" name="l02475"></a><span class="lineno"> 2475</span><span class="comment">       * was *just not yet* due, and the clock ticked before</span></div>
<div class="line"><a id="l02476" name="l02476"></a><span class="lineno"> 2476</span><span class="comment">       * our coap_ticks was called.</span></div>
<div class="line"><a id="l02477" name="l02477"></a><span class="lineno"> 2477</span><span class="comment">       *</span></div>
<div class="line"><a id="l02478" name="l02478"></a><span class="lineno"> 2478</span><span class="comment">       * not trying to retransmit anything now, as it might</span></div>
<div class="line"><a id="l02479" name="l02479"></a><span class="lineno"> 2479</span><span class="comment">       * cause uncontrollable recursion; let&#39;s just try again</span></div>
<div class="line"><a id="l02480" name="l02480"></a><span class="lineno"> 2480</span><span class="comment">       * with the next main loop run.</span></div>
<div class="line"><a id="l02481" name="l02481"></a><span class="lineno"> 2481</span><span class="comment">       * */</span></div>
<div class="line"><a id="l02482" name="l02482"></a><span class="lineno"> 2482</span>      delay = 0;</div>
<div class="line"><a id="l02483" name="l02483"></a><span class="lineno"> 2483</span>    }</div>
<div class="line"><a id="l02484" name="l02484"></a><span class="lineno"> 2484</span> </div>
<div class="line"><a id="l02485" name="l02485"></a><span class="lineno"> 2485</span>    printf(<span class="stringliteral">&quot;scheduling for %d ticks\n&quot;</span>, delay);</div>
<div class="line"><a id="l02486" name="l02486"></a><span class="lineno"> 2486</span>    sys_timeout(delay, coap_retransmittimer_execute, (<span class="keywordtype">void</span>*)ctx);</div>
<div class="line"><a id="l02487" name="l02487"></a><span class="lineno"> 2487</span>    ctx-&gt;timer_configured = 1;</div>
<div class="line"><a id="l02488" name="l02488"></a><span class="lineno"> 2488</span>  }</div>
<div class="line"><a id="l02489" name="l02489"></a><span class="lineno"> 2489</span>}</div>
<div class="line"><a id="l02490" name="l02490"></a><span class="lineno"> 2490</span><span class="preprocessor">#endif</span></div>
<div class="ttc" id="aaddress_8c_html_a5b47d6fe47a54a0798eddb9ea77005ea"><div class="ttname"><a href="address_8c.html#a5b47d6fe47a54a0798eddb9ea77005ea">coap_is_mcast</a></div><div class="ttdeci">int coap_is_mcast(const coap_address_t *a)</div><div class="ttdoc">Checks if given address a denotes a multicast address.</div><div class="ttdef"><b>Definition</b> <a href="address_8c_source.html#l00059">address.c:59</a></div></div>
<div class="ttc" id="aaddress_8h_html_a86beb351f1b51437ccda4d673cc64148"><div class="ttname"><a href="address_8h.html#a86beb351f1b51437ccda4d673cc64148">coap_address_init</a></div><div class="ttdeci">COAP_STATIC_INLINE void coap_address_init(coap_address_t *addr)</div><div class="ttdoc">Resets the given coap_address_t object addr to its default values.</div><div class="ttdef"><b>Definition</b> <a href="address_8h_source.html#l00104">address.h:104</a></div></div>
<div class="ttc" id="aaddress_8h_html_ada8c7f0dd95000bb418860b970d8cb9f"><div class="ttname"><a href="address_8h.html#ada8c7f0dd95000bb418860b970d8cb9f">coap_address_copy</a></div><div class="ttdeci">COAP_STATIC_INLINE void coap_address_copy(coap_address_t *dst, const coap_address_t *src)</div><div class="ttdef"><b>Definition</b> <a href="address_8h_source.html#l00116">address.h:116</a></div></div>
<div class="ttc" id="aasync_8h_html"><div class="ttname"><a href="async_8h.html">async.h</a></div><div class="ttdoc">State management for asynchronous messages.</div></div>
<div class="ttc" id="ablock_8h_html"><div class="ttname"><a href="block_8h.html">block.h</a></div></div>
<div class="ttc" id="acoap__debug_8h_html"><div class="ttname"><a href="coap__debug_8h.html">coap_debug.h</a></div></div>
<div class="ttc" id="acoap__io_8c_html_a2bbd598665f98a1e2f899b475f01618b"><div class="ttname"><a href="coap__io_8c.html#a2bbd598665f98a1e2f899b475f01618b">coap_socket_read</a></div><div class="ttdeci">ssize_t coap_socket_read(coap_socket_t *sock, uint8_t *data, size_t data_len)</div><div class="ttdef"><b>Definition</b> <a href="coap__io_8c_source.html#l00665">coap_io.c:665</a></div></div>
<div class="ttc" id="acoap__io_8c_html_a4bc4949c9ad150282ec082c99510046b"><div class="ttname"><a href="coap__io_8c.html#a4bc4949c9ad150282ec082c99510046b">coap_packet_get_memmapped</a></div><div class="ttdeci">void coap_packet_get_memmapped(coap_packet_t *packet, unsigned char **address, size_t *length)</div><div class="ttdoc">Given a packet, set msg and msg_len to an address and length of the packet's data in memory.</div><div class="ttdef"><b>Definition</b> <a href="coap__io_8c_source.html#l00912">coap_io.c:912</a></div></div>
<div class="ttc" id="acoap__io_8c_html_a85ec542c39fda4a6a5346c7801bf0ecd"><div class="ttname"><a href="coap__io_8c.html#a85ec542c39fda4a6a5346c7801bf0ecd">coap_socket_connect_tcp1</a></div><div class="ttdeci">int coap_socket_connect_tcp1(coap_socket_t *sock, const coap_address_t *local_if, const coap_address_t *server, int default_port, coap_address_t *local_addr, coap_address_t *remote_addr)</div><div class="ttdef"><b>Definition</b> <a href="coap__io_8c_source.html#l00268">coap_io.c:268</a></div></div>
<div class="ttc" id="acoap__io_8c_html_a9b8fa856db7113a97f74c726219c4be4"><div class="ttname"><a href="coap__io_8c.html#a9b8fa856db7113a97f74c726219c4be4">coap_network_read</a></div><div class="ttdeci">ssize_t coap_network_read(coap_socket_t *sock, coap_packet_t *packet)</div><div class="ttdoc">Function interface for reading data.</div><div class="ttdef"><b>Definition</b> <a href="coap__io_8c_source.html#l00923">coap_io.c:923</a></div></div>
<div class="ttc" id="acoap__io_8c_html_a9e9bc78d20872c6ea9cb8dddfcea45ad"><div class="ttname"><a href="coap__io_8c.html#a9e9bc78d20872c6ea9cb8dddfcea45ad">coap_network_send</a></div><div class="ttdeci">ssize_t coap_network_send(coap_socket_t *sock, const coap_session_t *session, const uint8_t *data, size_t datalen)</div><div class="ttdef"><b>Definition</b> <a href="coap__io_8c_source.html#l00758">coap_io.c:758</a></div></div>
<div class="ttc" id="acoap__io_8c_html_ae591a90d6202a1b7f82b1aa688614520"><div class="ttname"><a href="coap__io_8c.html#ae591a90d6202a1b7f82b1aa688614520">coap_socket_connect_tcp2</a></div><div class="ttdeci">int coap_socket_connect_tcp2(coap_socket_t *sock, coap_address_t *local_addr, coap_address_t *remote_addr)</div><div class="ttdef"><b>Definition</b> <a href="coap__io_8c_source.html#l00373">coap_io.c:373</a></div></div>
<div class="ttc" id="acoap__io_8c_html_af218007b0248f28b60cd0420d466c1a2"><div class="ttname"><a href="coap__io_8c.html#af218007b0248f28b60cd0420d466c1a2">coap_packet_set_addr</a></div><div class="ttdeci">void coap_packet_set_addr(coap_packet_t *packet, const coap_address_t *src, const coap_address_t *dst)</div><div class="ttdef"><b>Definition</b> <a href="coap__io_8c_source.html#l00917">coap_io.c:917</a></div></div>
<div class="ttc" id="acoap__io_8h_html_a02a86a92a552fb9f6a82ebda631bfe38"><div class="ttname"><a href="coap__io_8h.html#a02a86a92a552fb9f6a82ebda631bfe38">COAP_SOCKET_MULTICAST</a></div><div class="ttdeci">#define COAP_SOCKET_MULTICAST</div><div class="ttdoc">socket is used for multicast communication</div><div class="ttdef"><b>Definition</b> <a href="coap__io_8h_source.html#l00066">coap_io.h:66</a></div></div>
<div class="ttc" id="acoap__io_8h_html_a20da239bf8ab38350cb845629d6a5f0a"><div class="ttname"><a href="coap__io_8h.html#a20da239bf8ab38350cb845629d6a5f0a">coap_mcast_interface</a></div><div class="ttdeci">#define coap_mcast_interface(Local)</div><div class="ttdef"><b>Definition</b> <a href="coap__io_8h_source.html#l00156">coap_io.h:156</a></div></div>
<div class="ttc" id="acoap__io_8h_html_a3d4ed50cc653ac76015d00c1a9fac1ec"><div class="ttname"><a href="coap__io_8h.html#a3d4ed50cc653ac76015d00c1a9fac1ec">COAP_SOCKET_NOT_EMPTY</a></div><div class="ttdeci">#define COAP_SOCKET_NOT_EMPTY</div><div class="ttdoc">the socket is not empty</div><div class="ttdef"><b>Definition</b> <a href="coap__io_8h_source.html#l00055">coap_io.h:55</a></div></div>
<div class="ttc" id="acoap__io_8h_html_a3f6d0fff4e1a32c87c39cc3b9058020b"><div class="ttname"><a href="coap__io_8h.html#a3f6d0fff4e1a32c87c39cc3b9058020b">COAP_SOCKET_CAN_WRITE</a></div><div class="ttdeci">#define COAP_SOCKET_CAN_WRITE</div><div class="ttdoc">non blocking socket can now write without blocking</div><div class="ttdef"><b>Definition</b> <a href="coap__io_8h_source.html#l00063">coap_io.h:63</a></div></div>
<div class="ttc" id="acoap__io_8h_html_a4661ba56101390893cf9bdb5dbf5511b"><div class="ttname"><a href="coap__io_8h.html#a4661ba56101390893cf9bdb5dbf5511b">COAP_SOCKET_BOUND</a></div><div class="ttdeci">#define COAP_SOCKET_BOUND</div><div class="ttdoc">the socket is bound</div><div class="ttdef"><b>Definition</b> <a href="coap__io_8h_source.html#l00056">coap_io.h:56</a></div></div>
<div class="ttc" id="acoap__io_8h_html_a7ff2bb32137ca684be5539c156bdc418"><div class="ttname"><a href="coap__io_8h.html#a7ff2bb32137ca684be5539c156bdc418">coap_nack_reason_t</a></div><div class="ttdeci">coap_nack_reason_t</div><div class="ttdef"><b>Definition</b> <a href="coap__io_8h_source.html#l00206">coap_io.h:206</a></div></div>
<div class="ttc" id="acoap__io_8h_html_a7ff2bb32137ca684be5539c156bdc418a06f5d92ff204a7c9784c37fe7c580795"><div class="ttname"><a href="coap__io_8h.html#a7ff2bb32137ca684be5539c156bdc418a06f5d92ff204a7c9784c37fe7c580795">COAP_NACK_NOT_DELIVERABLE</a></div><div class="ttdeci">@ COAP_NACK_NOT_DELIVERABLE</div><div class="ttdef"><b>Definition</b> <a href="coap__io_8h_source.html#l00208">coap_io.h:208</a></div></div>
<div class="ttc" id="acoap__io_8h_html_a7ff2bb32137ca684be5539c156bdc418a607bec03e9375a1f176857c48d85e045"><div class="ttname"><a href="coap__io_8h.html#a7ff2bb32137ca684be5539c156bdc418a607bec03e9375a1f176857c48d85e045">COAP_NACK_TOO_MANY_RETRIES</a></div><div class="ttdeci">@ COAP_NACK_TOO_MANY_RETRIES</div><div class="ttdef"><b>Definition</b> <a href="coap__io_8h_source.html#l00207">coap_io.h:207</a></div></div>
<div class="ttc" id="acoap__io_8h_html_a7ff2bb32137ca684be5539c156bdc418a60a6eebe19b2f6701ed4fcc58886d830"><div class="ttname"><a href="coap__io_8h.html#a7ff2bb32137ca684be5539c156bdc418a60a6eebe19b2f6701ed4fcc58886d830">COAP_NACK_TLS_FAILED</a></div><div class="ttdeci">@ COAP_NACK_TLS_FAILED</div><div class="ttdef"><b>Definition</b> <a href="coap__io_8h_source.html#l00211">coap_io.h:210</a></div></div>
<div class="ttc" id="acoap__io_8h_html_a7ff2bb32137ca684be5539c156bdc418a9add7e23f77f49b0c7199b6cda1ea9c0"><div class="ttname"><a href="coap__io_8h.html#a7ff2bb32137ca684be5539c156bdc418a9add7e23f77f49b0c7199b6cda1ea9c0">COAP_NACK_RST</a></div><div class="ttdeci">@ COAP_NACK_RST</div><div class="ttdef"><b>Definition</b> <a href="coap__io_8h_source.html#l00209">coap_io.h:209</a></div></div>
<div class="ttc" id="acoap__io_8h_html_a907be6134bbd7d4799966acb3de4e4cf"><div class="ttname"><a href="coap__io_8h.html#a907be6134bbd7d4799966acb3de4e4cf">COAP_SOCKET_CAN_ACCEPT</a></div><div class="ttdeci">#define COAP_SOCKET_CAN_ACCEPT</div><div class="ttdoc">non blocking server socket can now accept without blocking</div><div class="ttdef"><b>Definition</b> <a href="coap__io_8h_source.html#l00064">coap_io.h:64</a></div></div>
<div class="ttc" id="acoap__io_8h_html_ac5bc2439a8bdf2a1722708bca47eb083"><div class="ttname"><a href="coap__io_8h.html#ac5bc2439a8bdf2a1722708bca47eb083">COAP_SOCKET_WANT_WRITE</a></div><div class="ttdeci">#define COAP_SOCKET_WANT_WRITE</div><div class="ttdoc">non blocking socket is waiting for writing</div><div class="ttdef"><b>Definition</b> <a href="coap__io_8h_source.html#l00059">coap_io.h:59</a></div></div>
<div class="ttc" id="acoap__io_8h_html_ac8c2a11c75a9efd272737eaec3e4ac5c"><div class="ttname"><a href="coap__io_8h.html#ac8c2a11c75a9efd272737eaec3e4ac5c">COAP_SOCKET_CAN_CONNECT</a></div><div class="ttdeci">#define COAP_SOCKET_CAN_CONNECT</div><div class="ttdoc">non blocking client socket can now connect without blocking</div><div class="ttdef"><b>Definition</b> <a href="coap__io_8h_source.html#l00065">coap_io.h:65</a></div></div>
<div class="ttc" id="acoap__io_8h_html_add6fabbe265b4a46a64d192aa545bf5f"><div class="ttname"><a href="coap__io_8h.html#add6fabbe265b4a46a64d192aa545bf5f">COAP_SOCKET_WANT_CONNECT</a></div><div class="ttdeci">#define COAP_SOCKET_WANT_CONNECT</div><div class="ttdoc">non blocking client socket is waiting for connect</div><div class="ttdef"><b>Definition</b> <a href="coap__io_8h_source.html#l00061">coap_io.h:61</a></div></div>
<div class="ttc" id="acoap__io_8h_html_aedf6f7819e71e2c9d27f5b6e40cc7242"><div class="ttname"><a href="coap__io_8h.html#aedf6f7819e71e2c9d27f5b6e40cc7242">COAP_SOCKET_CAN_READ</a></div><div class="ttdeci">#define COAP_SOCKET_CAN_READ</div><div class="ttdoc">non blocking socket can now read without blocking</div><div class="ttdef"><b>Definition</b> <a href="coap__io_8h_source.html#l00062">coap_io.h:62</a></div></div>
<div class="ttc" id="acoap__io_8h_html_af08709165965a0ce8298c23fbdfc36c1"><div class="ttname"><a href="coap__io_8h.html#af08709165965a0ce8298c23fbdfc36c1">COAP_SOCKET_CONNECTED</a></div><div class="ttdeci">#define COAP_SOCKET_CONNECTED</div><div class="ttdoc">the socket is connected</div><div class="ttdef"><b>Definition</b> <a href="coap__io_8h_source.html#l00057">coap_io.h:57</a></div></div>
<div class="ttc" id="acoap__io_8h_html_af88ca6b7683ad462a6187ccda018f75e"><div class="ttname"><a href="coap__io_8h.html#af88ca6b7683ad462a6187ccda018f75e">COAP_SOCKET_EMPTY</a></div><div class="ttdeci">#define COAP_SOCKET_EMPTY</div><div class="ttdoc">coap_socket_flags_t values</div><div class="ttdef"><b>Definition</b> <a href="coap__io_8h_source.html#l00054">coap_io.h:54</a></div></div>
<div class="ttc" id="acoap__notls_8c_html_a0671863eb92f2a37b1627b67564e82d4"><div class="ttname"><a href="coap__notls_8c.html#a0671863eb92f2a37b1627b67564e82d4">coap_dtls_new_context</a></div><div class="ttdeci">void * coap_dtls_new_context(struct coap_context_t *coap_context UNUSED)</div><div class="ttdef"><b>Definition</b> <a href="coap__notls_8c_source.html#l00086">coap_notls.c:86</a></div></div>
<div class="ttc" id="acoap__notls_8c_html_a08c2d9a091673f0488b246c1019fa7db"><div class="ttname"><a href="coap__notls_8c.html#a08c2d9a091673f0488b246c1019fa7db">coap_dtls_context_set_pki_root_cas</a></div><div class="ttdeci">int coap_dtls_context_set_pki_root_cas(struct coap_context_t *ctx UNUSED, const char *ca_file UNUSED, const char *ca_path UNUSED)</div><div class="ttdef"><b>Definition</b> <a href="coap__notls_8c_source.html#l00049">coap_notls.c:49</a></div></div>
<div class="ttc" id="acoap__notls_8c_html_a36896a2f4100c177e129ec8a5697aa95"><div class="ttname"><a href="coap__notls_8c.html#a36896a2f4100c177e129ec8a5697aa95">coap_dtls_context_set_psk</a></div><div class="ttdeci">int coap_dtls_context_set_psk(coap_context_t *ctx UNUSED, const char *hint UNUSED, coap_dtls_role_t role UNUSED)</div><div class="ttdef"><b>Definition</b> <a href="coap__notls_8c_source.html#l00057">coap_notls.c:57</a></div></div>
<div class="ttc" id="acoap__notls_8c_html_a56c73480c1bd1fa14c1727e026f82e17"><div class="ttname"><a href="coap__notls_8c.html#a56c73480c1bd1fa14c1727e026f82e17">coap_dtls_receive</a></div><div class="ttdeci">int coap_dtls_receive(coap_session_t *session UNUSED, const uint8_t *data UNUSED, size_t data_len UNUSED)</div><div class="ttdef"><b>Definition</b> <a href="coap__notls_8c_source.html#l00132">coap_notls.c:132</a></div></div>
<div class="ttc" id="acoap__notls_8c_html_a6108ea63abb51311934ad4e2a4a8b28d"><div class="ttname"><a href="coap__notls_8c.html#a6108ea63abb51311934ad4e2a4a8b28d">coap_dtls_hello</a></div><div class="ttdeci">int coap_dtls_hello(coap_session_t *session UNUSED, const uint8_t *data UNUSED, size_t data_len UNUSED)</div><div class="ttdef"><b>Definition</b> <a href="coap__notls_8c_source.html#l00140">coap_notls.c:140</a></div></div>
<div class="ttc" id="acoap__notls_8c_html_a873d77ef01ab93adcec48a1b60d46d77"><div class="ttname"><a href="coap__notls_8c.html#a873d77ef01ab93adcec48a1b60d46d77">coap_tls_read</a></div><div class="ttdeci">ssize_t coap_tls_read(coap_session_t *session UNUSED, uint8_t *data UNUSED, size_t data_len UNUSED)</div><div class="ttdef"><b>Definition</b> <a href="coap__notls_8c_source.html#l00169">coap_notls.c:169</a></div></div>
<div class="ttc" id="acoap__notls_8c_html_aab0e2b48071ed723e10cc8f10379abca"><div class="ttname"><a href="coap__notls_8c.html#aab0e2b48071ed723e10cc8f10379abca">coap_dtls_send</a></div><div class="ttdeci">int coap_dtls_send(coap_session_t *session UNUSED, const uint8_t *data UNUSED, size_t data_len UNUSED)</div><div class="ttdef"><b>Definition</b> <a href="coap__notls_8c_source.html#l00109">coap_notls.c:109</a></div></div>
<div class="ttc" id="acoap__notls_8c_html_ab6dd0798202ab0ff55fc7024e80a72d1"><div class="ttname"><a href="coap__notls_8c.html#ab6dd0798202ab0ff55fc7024e80a72d1">coap_dtls_free_context</a></div><div class="ttdeci">void coap_dtls_free_context(void *handle UNUSED)</div><div class="ttdef"><b>Definition</b> <a href="coap__notls_8c_source.html#l00091">coap_notls.c:91</a></div></div>
<div class="ttc" id="acoap__notls_8c_html_abff27cfd1dfb2359351f58244f929808"><div class="ttname"><a href="coap__notls_8c.html#abff27cfd1dfb2359351f58244f929808">coap_dtls_context_set_pki</a></div><div class="ttdeci">int coap_dtls_context_set_pki(coap_context_t *ctx UNUSED, coap_dtls_pki_t *setup_data UNUSED, coap_dtls_role_t role UNUSED)</div><div class="ttdef"><b>Definition</b> <a href="coap__notls_8c_source.html#l00041">coap_notls.c:41</a></div></div>
<div class="ttc" id="acoap__notls_8c_html_adaea05db98df31bd685353eb7099f356"><div class="ttname"><a href="coap__notls_8c.html#adaea05db98df31bd685353eb7099f356">coap_tls_write</a></div><div class="ttdeci">ssize_t coap_tls_write(coap_session_t *session UNUSED, const uint8_t *data UNUSED, size_t data_len UNUSED)</div><div class="ttdef"><b>Definition</b> <a href="coap__notls_8c_source.html#l00162">coap_notls.c:162</a></div></div>
<div class="ttc" id="acoap__notls_8c_html_ae4b316b8d30a716c6faeceb1cb8d9b8d"><div class="ttname"><a href="coap__notls_8c.html#ae4b316b8d30a716c6faeceb1cb8d9b8d">coap_dtls_new_client_session</a></div><div class="ttdeci">void * coap_dtls_new_client_session(coap_session_t *session UNUSED)</div><div class="ttdef"><b>Definition</b> <a href="coap__notls_8c_source.html#l00098">coap_notls.c:98</a></div></div>
<div class="ttc" id="acoap__notls_8c_html_af7d70ee719bade4e0a9c2f92b18fc2d6"><div class="ttname"><a href="coap__notls_8c.html#af7d70ee719bade4e0a9c2f92b18fc2d6">coap_tls_new_client_session</a></div><div class="ttdeci">void * coap_tls_new_client_session(coap_session_t *session UNUSED, int *connected UNUSED)</div><div class="ttdef"><b>Definition</b> <a href="coap__notls_8c_source.html#l00151">coap_notls.c:151</a></div></div>
<div class="ttc" id="acoap__session_8c_html_a192c2ce0f620200797ee34ac6f5d04c7"><div class="ttname"><a href="coap__session_8c.html#a192c2ce0f620200797ee34ac6f5d04c7">coap_session_delay_pdu</a></div><div class="ttdeci">ssize_t coap_session_delay_pdu(coap_session_t *session, coap_pdu_t *pdu, coap_queue_t *node)</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8c_source.html#l00253">coap_session.c:253</a></div></div>
<div class="ttc" id="acoap__session_8c_html_a23671937b7c384fb768ccd00cc39db45"><div class="ttname"><a href="coap__session_8c.html#a23671937b7c384fb768ccd00cc39db45">coap_session_set_mtu</a></div><div class="ttdeci">void coap_session_set_mtu(coap_session_t *session, unsigned mtu)</div><div class="ttdoc">Set the session MTU.</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8c_source.html#l00206">coap_session.c:206</a></div></div>
<div class="ttc" id="acoap__session_8c_html_a2dd08f1716885e31619c7890f06e9fdd"><div class="ttname"><a href="coap__session_8c.html#a2dd08f1716885e31619c7890f06e9fdd">coap_endpoint_new_dtls_session</a></div><div class="ttdeci">coap_session_t * coap_endpoint_new_dtls_session(coap_endpoint_t *endpoint, const coap_packet_t *packet, coap_tick_t now)</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8c_source.html#l00527">coap_session.c:527</a></div></div>
<div class="ttc" id="acoap__session_8c_html_a2f455ec1572982a5ae404beac0cfbd53"><div class="ttname"><a href="coap__session_8c.html#a2f455ec1572982a5ae404beac0cfbd53">coap_session_send_csm</a></div><div class="ttdeci">void coap_session_send_csm(coap_session_t *session)</div><div class="ttdoc">Notify session transport has just connected and CSM exchange can now start.</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8c_source.html#l00290">coap_session.c:290</a></div></div>
<div class="ttc" id="acoap__session_8c_html_a4368ee622c681bf7cf0b7cfe99c8ab37"><div class="ttname"><a href="coap__session_8c.html#a4368ee622c681bf7cf0b7cfe99c8ab37">coap_session_max_pdu_size</a></div><div class="ttdeci">size_t coap_session_max_pdu_size(const coap_session_t *session)</div><div class="ttdoc">Get maximum acceptable PDU size.</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8c_source.html#l00189">coap_session.c:189</a></div></div>
<div class="ttc" id="acoap__session_8c_html_a43ad12697cacde3be9579f8253ca9ccf"><div class="ttname"><a href="coap__session_8c.html#a43ad12697cacde3be9579f8253ca9ccf">coap_session_send</a></div><div class="ttdeci">ssize_t coap_session_send(coap_session_t *session, const uint8_t *data, size_t datalen)</div><div class="ttdoc">Function interface for datagram data transmission.</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8c_source.html#l00218">coap_session.c:218</a></div></div>
<div class="ttc" id="acoap__session_8c_html_a444db8938d615f02af128c7e65d34678"><div class="ttname"><a href="coap__session_8c.html#a444db8938d615f02af128c7e65d34678">coap_endpoint_get_session</a></div><div class="ttdeci">coap_session_t * coap_endpoint_get_session(coap_endpoint_t *endpoint, const coap_packet_t *packet, coap_tick_t now)</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8c_source.html#l00447">coap_session.c:447</a></div></div>
<div class="ttc" id="acoap__session_8c_html_a66470a0f926a4e96872e830ce793755c"><div class="ttname"><a href="coap__session_8c.html#a66470a0f926a4e96872e830ce793755c">coap_new_endpoint</a></div><div class="ttdeci">coap_endpoint_t * coap_new_endpoint(coap_context_t *context, const coap_address_t *listen_addr, coap_proto_t proto)</div><div class="ttdoc">Create a new endpoint for communicating with peers.</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8c_source.html#l00810">coap_session.c:810</a></div></div>
<div class="ttc" id="acoap__session_8c_html_a9aee135ba884d7c143b11bc42fd23e53"><div class="ttname"><a href="coap__session_8c.html#a9aee135ba884d7c143b11bc42fd23e53">coap_session_release</a></div><div class="ttdeci">void coap_session_release(coap_session_t *session)</div><div class="ttdoc">Decrement reference counter on a session.</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8c_source.html#l00077">coap_session.c:77</a></div></div>
<div class="ttc" id="acoap__session_8c_html_aa8b3a2da8480911b0216dad076038cb6"><div class="ttname"><a href="coap__session_8c.html#aa8b3a2da8480911b0216dad076038cb6">coap_session_connected</a></div><div class="ttdeci">void coap_session_connected(coap_session_t *session)</div><div class="ttdoc">Notify session that it has just connected or reconnected.</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8c_source.html#l00326">coap_session.c:326</a></div></div>
<div class="ttc" id="acoap__session_8c_html_aafc6eaf74d9d37986133b2c9ffdb4991"><div class="ttname"><a href="coap__session_8c.html#aafc6eaf74d9d37986133b2c9ffdb4991">coap_new_server_session</a></div><div class="ttdeci">coap_session_t * coap_new_server_session(struct coap_context_t *ctx, coap_endpoint_t *ep)</div><div class="ttdoc">Creates a new server session for the specified endpoint.</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8c_source.html#l00780">coap_session.c:780</a></div></div>
<div class="ttc" id="acoap__session_8c_html_ad3377d3198c10fa086502035ded9c268"><div class="ttname"><a href="coap__session_8c.html#ad3377d3198c10fa086502035ded9c268">coap_session_disconnected</a></div><div class="ttdeci">void coap_session_disconnected(coap_session_t *session, coap_nack_reason_t reason)</div><div class="ttdoc">Notify session that it has failed.</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8c_source.html#l00383">coap_session.c:383</a></div></div>
<div class="ttc" id="acoap__session_8c_html_adb19e1f2544b8b01424fa2e9dce41e7b"><div class="ttname"><a href="coap__session_8c.html#adb19e1f2544b8b01424fa2e9dce41e7b">coap_session_write</a></div><div class="ttdeci">ssize_t coap_session_write(coap_session_t *session, const uint8_t *data, size_t datalen)</div><div class="ttdoc">Function interface for stream data transmission.</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8c_source.html#l00239">coap_session.c:239</a></div></div>
<div class="ttc" id="acoap__session_8c_html_ae37bac62f8de2cecd968ec1c26eb23b4"><div class="ttname"><a href="coap__session_8c.html#ae37bac62f8de2cecd968ec1c26eb23b4">coap_session_reference</a></div><div class="ttdeci">coap_session_t * coap_session_reference(coap_session_t *session)</div><div class="ttdoc">Increment reference counter on a session.</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8c_source.html#l00071">coap_session.c:71</a></div></div>
<div class="ttc" id="acoap__session_8h_html_a3b04568c8db8bcced69f14b813805b7f"><div class="ttname"><a href="coap__session_8h.html#a3b04568c8db8bcced69f14b813805b7f">COAP_SESSION_STATE_HANDSHAKE</a></div><div class="ttdeci">#define COAP_SESSION_STATE_HANDSHAKE</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00052">coap_session.h:52</a></div></div>
<div class="ttc" id="acoap__session_8h_html_a444a82f20628438269ebd418c4bdbe5f"><div class="ttname"><a href="coap__session_8h.html#a444a82f20628438269ebd418c4bdbe5f">COAP_SESSION_STATE_CSM</a></div><div class="ttdeci">#define COAP_SESSION_STATE_CSM</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00053">coap_session.h:53</a></div></div>
<div class="ttc" id="acoap__session_8h_html_a5f0ed55aa093f7c31ce220de378f15a1"><div class="ttname"><a href="coap__session_8h.html#a5f0ed55aa093f7c31ce220de378f15a1">COAP_SESSION_TYPE_HELLO</a></div><div class="ttdeci">#define COAP_SESSION_TYPE_HELLO</div><div class="ttdoc">server-side ephemeral session for responding to a client hello</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00044">coap_session.h:44</a></div></div>
<div class="ttc" id="acoap__session_8h_html_a66dad7e75beba98bd59b096adbe39c35"><div class="ttname"><a href="coap__session_8h.html#a66dad7e75beba98bd59b096adbe39c35">COAP_PROTO_NOT_RELIABLE</a></div><div class="ttdeci">#define COAP_PROTO_NOT_RELIABLE(p)</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00035">coap_session.h:35</a></div></div>
<div class="ttc" id="acoap__session_8h_html_a7197e71853281bff72e84261018f81d6"><div class="ttname"><a href="coap__session_8h.html#a7197e71853281bff72e84261018f81d6">COAP_SESSION_STATE_CONNECTING</a></div><div class="ttdeci">#define COAP_SESSION_STATE_CONNECTING</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00051">coap_session.h:51</a></div></div>
<div class="ttc" id="acoap__session_8h_html_a7de76e6002dd8d1ca53f3302e4e33d21"><div class="ttname"><a href="coap__session_8h.html#a7de76e6002dd8d1ca53f3302e4e33d21">COAP_PROTO_RELIABLE</a></div><div class="ttdeci">#define COAP_PROTO_RELIABLE(p)</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00036">coap_session.h:36</a></div></div>
<div class="ttc" id="acoap__session_8h_html_a8a92a2707bab8b00c7adc43291b587c0"><div class="ttname"><a href="coap__session_8h.html#a8a92a2707bab8b00c7adc43291b587c0">COAP_SESSION_STATE_NONE</a></div><div class="ttdeci">#define COAP_SESSION_STATE_NONE</div><div class="ttdoc">coap_session_state_t values</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00050">coap_session.h:50</a></div></div>
<div class="ttc" id="acoap__session_8h_html_a954b835ecd156cde63fee7d5f279ab32"><div class="ttname"><a href="coap__session_8h.html#a954b835ecd156cde63fee7d5f279ab32">COAP_SESSION_STATE_ESTABLISHED</a></div><div class="ttdeci">#define COAP_SESSION_STATE_ESTABLISHED</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00054">coap_session.h:54</a></div></div>
<div class="ttc" id="aencode_8c_html_a6987668306bf69553f9b207a624c2d44"><div class="ttname"><a href="encode_8c.html#a6987668306bf69553f9b207a624c2d44">coap_encode_var_safe</a></div><div class="ttdeci">unsigned int coap_encode_var_safe(uint8_t *buf, size_t length, unsigned int val)</div><div class="ttdoc">Encodes multiple-length byte sequences.</div><div class="ttdef"><b>Definition</b> <a href="encode_8c_source.html#l00045">encode.c:45</a></div></div>
<div class="ttc" id="aencode_8c_html_a7d12488893c3062c98bad1f4ab58455c"><div class="ttname"><a href="encode_8c.html#a7d12488893c3062c98bad1f4ab58455c">coap_decode_var_bytes</a></div><div class="ttdeci">unsigned int coap_decode_var_bytes(const uint8_t *buf, unsigned int len)</div><div class="ttdoc">Decodes multiple-length byte sequences.</div><div class="ttdef"><b>Definition</b> <a href="encode_8c_source.html#l00036">encode.c:36</a></div></div>
<div class="ttc" id="aencode_8h_html"><div class="ttname"><a href="encode_8h.html">encode.h</a></div></div>
<div class="ttc" id="agroup__block_html_ga0462e5c93460d2df1c60611188192524"><div class="ttname"><a href="group__block.html#ga0462e5c93460d2df1c60611188192524">coap_write_block_opt</a></div><div class="ttdeci">int coap_write_block_opt(coap_block_t *block, uint16_t type, coap_pdu_t *pdu, size_t data_length)</div><div class="ttdoc">Writes a block option of type type to message pdu.</div><div class="ttdef"><b>Definition</b> <a href="block_8c_source.html#l00074">block.c:74</a></div></div>
<div class="ttc" id="agroup__block_html_ga1a064effcefd02b9e5c8f99b297c0edc"><div class="ttname"><a href="group__block.html#ga1a064effcefd02b9e5c8f99b297c0edc">COAP_MAX_BLOCK_SZX</a></div><div class="ttdeci">#define COAP_MAX_BLOCK_SZX</div><div class="ttdoc">The largest value for the SZX component in a Block option.</div><div class="ttdef"><b>Definition</b> <a href="block_8h_source.html#l00030">block.h:30</a></div></div>
<div class="ttc" id="agroup__block_html_ga714d943bd85123de1b8b6f86ec204a69"><div class="ttname"><a href="group__block.html#ga714d943bd85123de1b8b6f86ec204a69">coap_get_block</a></div><div class="ttdeci">int coap_get_block(coap_pdu_t *pdu, uint16_t type, coap_block_t *block)</div><div class="ttdoc">Initializes block from pdu.</div><div class="ttdef"><b>Definition</b> <a href="block_8c_source.html#l00046">block.c:46</a></div></div>
<div class="ttc" id="agroup__cc_html_ga9d5bcf0eaa2f8b5d0c8f0c7b0e76aac9"><div class="ttname"><a href="group__cc.html#ga9d5bcf0eaa2f8b5d0c8f0c7b0e76aac9">COAP_DEFAULT_NSTART</a></div><div class="ttdeci">#define COAP_DEFAULT_NSTART</div><div class="ttdoc">The number of simultaneous outstanding interactions that a client maintains to a given server.</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00408">coap_session.h:408</a></div></div>
<div class="ttc" id="agroup__clock_html_ga2dd35de82321ad2466dab00275914544"><div class="ttname"><a href="group__clock.html#ga2dd35de82321ad2466dab00275914544">coap_tick_diff_t</a></div><div class="ttdeci">int64_t coap_tick_diff_t</div><div class="ttdoc">This data type is used to represent the difference between two clock_tick_t values.</div><div class="ttdef"><b>Definition</b> <a href="coap__time_8h_source.html#l00097">coap_time.h:97</a></div></div>
<div class="ttc" id="agroup__clock_html_ga350826988e63ff446a2a84034ecdf43d"><div class="ttname"><a href="group__clock.html#ga350826988e63ff446a2a84034ecdf43d">coap_ticks</a></div><div class="ttdeci">void coap_ticks(coap_tick_t *t)</div><div class="ttdoc">Sets t to the internal time with COAP_TICKS_PER_SECOND resolution.</div></div>
<div class="ttc" id="agroup__clock_html_ga4722a7e40ba99c4d3feba19de1b980be"><div class="ttname"><a href="group__clock.html#ga4722a7e40ba99c4d3feba19de1b980be">coap_clock_init</a></div><div class="ttdeci">void coap_clock_init(void)</div><div class="ttdoc">Initializes the internal clock.</div></div>
<div class="ttc" id="agroup__clock_html_ga97ff1502e211b4ee6c3f15a598833438"><div class="ttname"><a href="group__clock.html#ga97ff1502e211b4ee6c3f15a598833438">coap_tick_t</a></div><div class="ttdeci">uint64_t coap_tick_t</div><div class="ttdoc">This data type represents internal timer ticks with COAP_TICKS_PER_SECOND resolution.</div><div class="ttdef"><b>Definition</b> <a href="coap__time_8h_source.html#l00085">coap_time.h:85</a></div></div>
<div class="ttc" id="agroup__clock_html_gabf672e8aaf725f9ccbc4fc0aa202a5bb"><div class="ttname"><a href="group__clock.html#gabf672e8aaf725f9ccbc4fc0aa202a5bb">COAP_TICKS_PER_SECOND</a></div><div class="ttdeci">#define COAP_TICKS_PER_SECOND</div><div class="ttdoc">Use ms resolution on POSIX systems.</div><div class="ttdef"><b>Definition</b> <a href="coap__time_8h_source.html#l00100">coap_time.h:100</a></div></div>
<div class="ttc" id="agroup__dtls__internal_html_ga1e81d904e13ccf3af6a56ab3ebdc8a34"><div class="ttname"><a href="group__dtls__internal.html#ga1e81d904e13ccf3af6a56ab3ebdc8a34">coap_dtls_startup</a></div><div class="ttdeci">void coap_dtls_startup(void)</div><div class="ttdoc">Initialize the underlying (D)TLS Library layer.</div><div class="ttdef"><b>Definition</b> <a href="coap__notls_8c_source.html#l00072">coap_notls.c:72</a></div></div>
<div class="ttc" id="agroup__dtls__internal_html_gga4dbea8aa6943bcf865990b5cebb6bfa4a07db1c396fbda1115124a22b3b9cb4da"><div class="ttname"><a href="group__dtls__internal.html#gga4dbea8aa6943bcf865990b5cebb6bfa4a07db1c396fbda1115124a22b3b9cb4da">COAP_DTLS_ROLE_SERVER</a></div><div class="ttdeci">@ COAP_DTLS_ROLE_SERVER</div><div class="ttdoc">Internal function invoked for server.</div><div class="ttdef"><b>Definition</b> <a href="coap__dtls_8h_source.html#l00267">coap_dtls.h:266</a></div></div>
<div class="ttc" id="agroup__dtls_html_ga6494be4b6aa3c5d86232cb5ba19fef83"><div class="ttname"><a href="group__dtls.html#ga6494be4b6aa3c5d86232cb5ba19fef83">COAP_DTLS_PKI_SETUP_VERSION</a></div><div class="ttdeci">#define COAP_DTLS_PKI_SETUP_VERSION</div><div class="ttdoc">Latest PKI setup version.</div><div class="ttdef"><b>Definition</b> <a href="coap__dtls_8h_source.html#l00186">coap_dtls.h:186</a></div></div>
<div class="ttc" id="agroup__dtls_html_ga9def28dc6da3b77c14e89d63769ec085"><div class="ttname"><a href="group__dtls.html#ga9def28dc6da3b77c14e89d63769ec085">coap_dtls_is_supported</a></div><div class="ttdeci">int coap_dtls_is_supported(void)</div><div class="ttdoc">Check whether DTLS is available.</div><div class="ttdef"><b>Definition</b> <a href="coap__notls_8c_source.html#l00023">coap_notls.c:23</a></div></div>
<div class="ttc" id="agroup__events_html_ga4b7987047870eb07d52a9bb7a04b04ad"><div class="ttname"><a href="group__events.html#ga4b7987047870eb07d52a9bb7a04b04ad">COAP_EVENT_DTLS_ERROR</a></div><div class="ttdeci">#define COAP_EVENT_DTLS_ERROR</div><div class="ttdef"><b>Definition</b> <a href="coap__event_8h_source.html#l00036">coap_event.h:36</a></div></div>
<div class="ttc" id="agroup__events_html_ga75a08ceb9a855937288ac3996656c872"><div class="ttname"><a href="group__events.html#ga75a08ceb9a855937288ac3996656c872">coap_event_t</a></div><div class="ttdeci">unsigned int coap_event_t</div><div class="ttdoc">Scalar type to represent different events, e.g.</div><div class="ttdef"><b>Definition</b> <a href="coap__event_8h_source.html#l00028">coap_event.h:28</a></div></div>
<div class="ttc" id="agroup__events_html_gaa06f99fe2908c1d1f14e114ebaa13bc6"><div class="ttname"><a href="group__events.html#gaa06f99fe2908c1d1f14e114ebaa13bc6">COAP_EVENT_TCP_FAILED</a></div><div class="ttdeci">#define COAP_EVENT_TCP_FAILED</div><div class="ttdef"><b>Definition</b> <a href="coap__event_8h_source.html#l00043">coap_event.h:43</a></div></div>
<div class="ttc" id="agroup__events_html_gaeedad13a6a9e652948097bb1f8290229"><div class="ttname"><a href="group__events.html#gaeedad13a6a9e652948097bb1f8290229">COAP_EVENT_DTLS_CONNECTED</a></div><div class="ttdeci">#define COAP_EVENT_DTLS_CONNECTED</div><div class="ttdef"><b>Definition</b> <a href="coap__event_8h_source.html#l00034">coap_event.h:34</a></div></div>
<div class="ttc" id="agroup__events_html_gaf2a1235d6d66e20095721a60c5ccdf84"><div class="ttname"><a href="group__events.html#gaf2a1235d6d66e20095721a60c5ccdf84">COAP_EVENT_TCP_CONNECTED</a></div><div class="ttdeci">#define COAP_EVENT_TCP_CONNECTED</div><div class="ttdoc">TCP events for COAP_PROTO_TCP and COAP_PROTO_TLS.</div><div class="ttdef"><b>Definition</b> <a href="coap__event_8h_source.html#l00041">coap_event.h:41</a></div></div>
<div class="ttc" id="agroup__logging_html_ga10c3fbd56b0eb3a8722b27a65fc9b0ce"><div class="ttname"><a href="group__logging.html#ga10c3fbd56b0eb3a8722b27a65fc9b0ce">coap_get_log_level</a></div><div class="ttdeci">coap_log_t coap_get_log_level(void)</div><div class="ttdoc">Get the current logging level.</div><div class="ttdef"><b>Definition</b> <a href="coap__debug_8c_source.html#l00071">coap_debug.c:71</a></div></div>
<div class="ttc" id="agroup__logging_html_ga3123fcde8310c0f7cb48897a683baef6"><div class="ttname"><a href="group__logging.html#ga3123fcde8310c0f7cb48897a683baef6">coap_show_pdu</a></div><div class="ttdeci">void coap_show_pdu(coap_log_t level, const coap_pdu_t *pdu)</div><div class="ttdoc">Display the contents of the specified pdu.</div><div class="ttdef"><b>Definition</b> <a href="coap__debug_8c_source.html#l00461">coap_debug.c:461</a></div></div>
<div class="ttc" id="agroup__logging_html_gaab3c752e5438040817ca0df50ceaf162"><div class="ttname"><a href="group__logging.html#gaab3c752e5438040817ca0df50ceaf162">coap_endpoint_str</a></div><div class="ttdeci">const char * coap_endpoint_str(const coap_endpoint_t *endpoint)</div><div class="ttdoc">Get endpoint description.</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8c_source.html#l00980">coap_session.c:980</a></div></div>
<div class="ttc" id="agroup__logging_html_gabf09c67f27059ca278900e7e8fdd475e"><div class="ttname"><a href="group__logging.html#gabf09c67f27059ca278900e7e8fdd475e">coap_session_str</a></div><div class="ttdeci">const char * coap_session_str(const coap_session_t *session)</div><div class="ttdoc">Get session description.</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8c_source.html#l00943">coap_session.c:943</a></div></div>
<div class="ttc" id="agroup__logging_html_gaff2785484e756c8ec2fce408f9b81f0f"><div class="ttname"><a href="group__logging.html#gaff2785484e756c8ec2fce408f9b81f0f">coap_log</a></div><div class="ttdeci">#define coap_log(level,...)</div><div class="ttdoc">Logging function.</div><div class="ttdef"><b>Definition</b> <a href="coap__debug_8h_source.html#l00122">coap_debug.h:122</a></div></div>
<div class="ttc" id="agroup__logging_html_gga53c7b97a7af4d62d8c1678d658cc7446a0b4d9ad891dde7ae8deeb1704195858c"><div class="ttname"><a href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446a0b4d9ad891dde7ae8deeb1704195858c">LOG_ERR</a></div><div class="ttdeci">@ LOG_ERR</div><div class="ttdoc">Error.</div><div class="ttdef"><b>Definition</b> <a href="coap__debug_8h_source.html#l00045">coap_debug.h:45</a></div></div>
<div class="ttc" id="agroup__logging_html_gga53c7b97a7af4d62d8c1678d658cc7446a6e98ff471e3ce6c4ef2d75c37ee51837"><div class="ttname"><a href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446a6e98ff471e3ce6c4ef2d75c37ee51837">LOG_INFO</a></div><div class="ttdeci">@ LOG_INFO</div><div class="ttdoc">Information.</div><div class="ttdef"><b>Definition</b> <a href="coap__debug_8h_source.html#l00048">coap_debug.h:48</a></div></div>
<div class="ttc" id="agroup__logging_html_gga53c7b97a7af4d62d8c1678d658cc7446a81d3a95073074ab212668a29218cc343"><div class="ttname"><a href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446a81d3a95073074ab212668a29218cc343">LOG_ALERT</a></div><div class="ttdeci">@ LOG_ALERT</div><div class="ttdoc">Alert.</div><div class="ttdef"><b>Definition</b> <a href="coap__debug_8h_source.html#l00043">coap_debug.h:43</a></div></div>
<div class="ttc" id="agroup__logging_html_gga53c7b97a7af4d62d8c1678d658cc7446a8f6fe15bfe15104da6d1b360194a5400"><div class="ttname"><a href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446a8f6fe15bfe15104da6d1b360194a5400">LOG_WARNING</a></div><div class="ttdeci">@ LOG_WARNING</div><div class="ttdoc">Warning.</div><div class="ttdef"><b>Definition</b> <a href="coap__debug_8h_source.html#l00046">coap_debug.h:46</a></div></div>
<div class="ttc" id="agroup__logging_html_gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e"><div class="ttname"><a href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446ab9f002c6ffbfd511da8090213227454e">LOG_DEBUG</a></div><div class="ttdeci">@ LOG_DEBUG</div><div class="ttdoc">Debug.</div><div class="ttdef"><b>Definition</b> <a href="coap__debug_8h_source.html#l00050">coap_debug.h:49</a></div></div>
<div class="ttc" id="agroup__logging_html_gga53c7b97a7af4d62d8c1678d658cc7446adafd3577e2990c9b3db0cb7c2f20604c"><div class="ttname"><a href="group__logging.html#gga53c7b97a7af4d62d8c1678d658cc7446adafd3577e2990c9b3db0cb7c2f20604c">LOG_EMERG</a></div><div class="ttdeci">@ LOG_EMERG</div><div class="ttdoc">Emergency.</div><div class="ttdef"><b>Definition</b> <a href="coap__debug_8h_source.html#l00042">coap_debug.h:42</a></div></div>
<div class="ttc" id="agroup__observe_html_ga51750fd894c457a4fe45f06c96641b2f"><div class="ttname"><a href="group__observe.html#ga51750fd894c457a4fe45f06c96641b2f">COAP_OBSERVE_CANCEL</a></div><div class="ttdeci">#define COAP_OBSERVE_CANCEL</div><div class="ttdoc">The value COAP_OBSERVE_CANCEL in a GET request indicates that the observe relationship for (sender ad...</div><div class="ttdef"><b>Definition</b> <a href="subscribe_8h_source.html#l00035">subscribe.h:35</a></div></div>
<div class="ttc" id="agroup__opt__filter_html_ga001c5b06ae9e02996509516871cb69a8"><div class="ttname"><a href="group__opt__filter.html#ga001c5b06ae9e02996509516871cb69a8">coap_opt_filter_t</a></div><div class="ttdeci">uint16_t coap_opt_filter_t[COAP_OPT_FILTER_SIZE]</div><div class="ttdoc">Fixed-size vector we use for option filtering.</div><div class="ttdef"><b>Definition</b> <a href="option_8h_source.html#l00119">option.h:119</a></div></div>
<div class="ttc" id="agroup__opt__filter_html_ga0170aecd699295f02affd5b280244088"><div class="ttname"><a href="group__opt__filter.html#ga0170aecd699295f02affd5b280244088">coap_option_filter_set</a></div><div class="ttdeci">int coap_option_filter_set(coap_opt_filter_t filter, uint16_t type)</div><div class="ttdoc">Sets the corresponding entry for type in filter.</div><div class="ttdef"><b>Definition</b> <a href="option_8c_source.html#l00534">option.c:534</a></div></div>
<div class="ttc" id="agroup__opt__filter_html_ga19d4dbbc03ef362996964fbfdd1d4c7b"><div class="ttname"><a href="group__opt__filter.html#ga19d4dbbc03ef362996964fbfdd1d4c7b">coap_option_next</a></div><div class="ttdeci">coap_opt_t * coap_option_next(coap_opt_iterator_t *oi)</div><div class="ttdoc">Updates the iterator oi to point to the next option.</div><div class="ttdef"><b>Definition</b> <a href="option_8c_source.html#l00157">option.c:157</a></div></div>
<div class="ttc" id="agroup__opt__filter_html_ga35c348f1ce988e6788930a710f4535c9"><div class="ttname"><a href="group__opt__filter.html#ga35c348f1ce988e6788930a710f4535c9">coap_check_option</a></div><div class="ttdeci">coap_opt_t * coap_check_option(coap_pdu_t *pdu, uint16_t type, coap_opt_iterator_t *oi)</div><div class="ttdoc">Retrieves the first option of type type from pdu.</div><div class="ttdef"><b>Definition</b> <a href="option_8c_source.html#l00207">option.c:207</a></div></div>
<div class="ttc" id="agroup__opt__filter_html_ga3d3a4336ff55e111eae4eb2a1883a98b"><div class="ttname"><a href="group__opt__filter.html#ga3d3a4336ff55e111eae4eb2a1883a98b">coap_option_filter_get</a></div><div class="ttdeci">int coap_option_filter_get(coap_opt_filter_t filter, uint16_t type)</div><div class="ttdoc">Checks if type is contained in filter.</div><div class="ttdef"><b>Definition</b> <a href="option_8c_source.html#l00544">option.c:544</a></div></div>
<div class="ttc" id="agroup__opt__filter_html_ga81f470e9cdcc258799e10f6ed8a3ce5e"><div class="ttname"><a href="group__opt__filter.html#ga81f470e9cdcc258799e10f6ed8a3ce5e">COAP_OPT_ALL</a></div><div class="ttdeci">#define COAP_OPT_ALL</div><div class="ttdoc">Pre-defined filter that includes all options.</div><div class="ttdef"><b>Definition</b> <a href="option_8h_source.html#l00122">option.h:122</a></div></div>
<div class="ttc" id="agroup__opt__filter_html_ga883885e793388359ef93d195bdbb4c2c"><div class="ttname"><a href="group__opt__filter.html#ga883885e793388359ef93d195bdbb4c2c">coap_option_filter_clear</a></div><div class="ttdeci">COAP_STATIC_INLINE void coap_option_filter_clear(coap_opt_filter_t f)</div><div class="ttdoc">Clears filter f.</div><div class="ttdef"><b>Definition</b> <a href="option_8h_source.html#l00130">option.h:130</a></div></div>
<div class="ttc" id="agroup__opt__filter_html_gaa76930050882387b0f5c7d0246e14440"><div class="ttname"><a href="group__opt__filter.html#gaa76930050882387b0f5c7d0246e14440">coap_option_iterator_init</a></div><div class="ttdeci">coap_opt_iterator_t * coap_option_iterator_init(const coap_pdu_t *pdu, coap_opt_iterator_t *oi, const coap_opt_filter_t filter)</div><div class="ttdoc">Initializes the given option iterator oi to point to the beginning of the pdu's option list.</div><div class="ttdef"><b>Definition</b> <a href="option_8c_source.html#l00121">option.c:121</a></div></div>
<div class="ttc" id="agroup__opt__filter_html_gaac65919c93f7047b687d33af9672b3ea"><div class="ttname"><a href="group__opt__filter.html#gaac65919c93f7047b687d33af9672b3ea">coap_opt_length</a></div><div class="ttdeci">uint16_t coap_opt_length(const coap_opt_t *opt)</div><div class="ttdoc">Returns the length of the given option.</div><div class="ttdef"><b>Definition</b> <a href="option_8c_source.html#l00249">option.c:249</a></div></div>
<div class="ttc" id="agroup__opt__filter_html_gae505a1c44aa1f5aa01531deaff245e5b"><div class="ttname"><a href="group__opt__filter.html#gae505a1c44aa1f5aa01531deaff245e5b">coap_option_clrb</a></div><div class="ttdeci">COAP_STATIC_INLINE int coap_option_clrb(coap_opt_filter_t filter, uint16_t type)</div><div class="ttdoc">Clears the corresponding bit for type in filter.</div><div class="ttdef"><b>Definition</b> <a href="option_8h_source.html#l00200">option.h:200</a></div></div>
<div class="ttc" id="agroup__opt__filter_html_gaec4e944d39722779cac610ed22ee09db"><div class="ttname"><a href="group__opt__filter.html#gaec4e944d39722779cac610ed22ee09db">coap_opt_value</a></div><div class="ttdeci">const uint8_t * coap_opt_value(const coap_opt_t *opt)</div><div class="ttdoc">Returns a pointer to the value of the given option.</div><div class="ttdef"><b>Definition</b> <a href="option_8c_source.html#l00286">option.c:286</a></div></div>
<div class="ttc" id="agroup__prng_html_ga7c7d6401e43c811dacb517d51184c873"><div class="ttname"><a href="group__prng.html#ga7c7d6401e43c811dacb517d51184c873">prng</a></div><div class="ttdeci">#define prng(Buf, Length)</div><div class="ttdoc">Fills Buf with Length bytes of random data.</div><div class="ttdef"><b>Definition</b> <a href="prng_8h_source.html#l00112">prng.h:112</a></div></div>
<div class="ttc" id="agroup__prng_html_gaa32e46211968b5a4936d4c122b7fd44c"><div class="ttname"><a href="group__prng.html#gaa32e46211968b5a4936d4c122b7fd44c">prng_init</a></div><div class="ttdeci">#define prng_init(Value)</div><div class="ttdoc">Called to set the PRNG seed.</div><div class="ttdef"><b>Definition</b> <a href="prng_8h_source.html#l00122">prng.h:122</a></div></div>
<div class="ttc" id="agroup__string_html_ga607f236d46eb2b285bbfaae7588cea10"><div class="ttname"><a href="group__string.html#ga607f236d46eb2b285bbfaae7588cea10">COAP_SET_STR</a></div><div class="ttdeci">#define COAP_SET_STR(st, l, v)</div><div class="ttdef"><b>Definition</b> <a href="str_8h_source.html#l00038">str.h:38</a></div></div>
<div class="ttc" id="agroup__string_html_ga7f43c10b486dc6d45c37fcaf987d711b"><div class="ttname"><a href="group__string.html#ga7f43c10b486dc6d45c37fcaf987d711b">coap_string_equal</a></div><div class="ttdeci">#define coap_string_equal(string1, string2)</div><div class="ttdoc">Compares the two strings for equality.</div><div class="ttdef"><b>Definition</b> <a href="str_8h_source.html#l00115">str.h:115</a></div></div>
<div class="ttc" id="agroup__string_html_gad991c87cfcf9b2414d2dc430c8701ed3"><div class="ttname"><a href="group__string.html#gad991c87cfcf9b2414d2dc430c8701ed3">coap_delete_string</a></div><div class="ttdeci">void coap_delete_string(coap_string_t *s)</div><div class="ttdoc">Deletes the given string and releases any memory allocated.</div><div class="ttdef"><b>Definition</b> <a href="str_8c_source.html#l00034">str.c:34</a></div></div>
<div class="ttc" id="alibcoap_8h_html"><div class="ttname"><a href="libcoap_8h.html">libcoap.h</a></div></div>
<div class="ttc" id="alibcoap_8h_html_a58b4446dccd0b8c21b3532ef6b77a57d"><div class="ttname"><a href="libcoap_8h.html#a58b4446dccd0b8c21b3532ef6b77a57d">COAP_STATIC_INLINE</a></div><div class="ttdeci">#define COAP_STATIC_INLINE</div><div class="ttdef"><b>Definition</b> <a href="libcoap_8h_source.html#l00038">libcoap.h:38</a></div></div>
<div class="ttc" id="amem_8c_html_a3d4ae9c092e117c836f52dc7d7cee574"><div class="ttname"><a href="mem_8c.html#a3d4ae9c092e117c836f52dc7d7cee574">assert</a></div><div class="ttdeci">#define assert(...)</div><div class="ttdef"><b>Definition</b> <a href="mem_8c_source.html#l00018">mem.c:18</a></div></div>
<div class="ttc" id="amem_8h_html"><div class="ttname"><a href="mem_8h.html">mem.h</a></div></div>
<div class="ttc" id="amem_8h_html_a1e46a1505bb13f03fdacd5d1b32502a6"><div class="ttname"><a href="mem_8h.html#a1e46a1505bb13f03fdacd5d1b32502a6">coap_free</a></div><div class="ttdeci">COAP_STATIC_INLINE void coap_free(void *object)</div><div class="ttdoc">Wrapper function to coap_free_type() for backwards compatibility.</div><div class="ttdef"><b>Definition</b> <a href="mem_8h_source.html#l00082">mem.h:82</a></div></div>
<div class="ttc" id="amem_8h_html_a26f40acd710e6c964242c2e0cd789375"><div class="ttname"><a href="mem_8h.html#a26f40acd710e6c964242c2e0cd789375">coap_malloc</a></div><div class="ttdeci">COAP_STATIC_INLINE void * coap_malloc(size_t size)</div><div class="ttdoc">Wrapper function to coap_malloc_type() for backwards compatibility.</div><div class="ttdef"><b>Definition</b> <a href="mem_8h_source.html#l00075">mem.h:75</a></div></div>
<div class="ttc" id="amem_8h_html_a65d0fc0fe6cad555b56e92ccb57613ba"><div class="ttname"><a href="mem_8h.html#a65d0fc0fe6cad555b56e92ccb57613ba">coap_memory_init</a></div><div class="ttdeci">void coap_memory_init(void)</div><div class="ttdoc">Initializes libcoap's memory management.</div></div>
<div class="ttc" id="amem_8h_html_a703fa791ab7a14ff983df73b15e9c620a239e408c064f87c6e7cfa8b2d6442f9d"><div class="ttname"><a href="mem_8h.html#a703fa791ab7a14ff983df73b15e9c620a239e408c064f87c6e7cfa8b2d6442f9d">COAP_NODE</a></div><div class="ttdeci">@ COAP_NODE</div><div class="ttdef"><b>Definition</b> <a href="mem_8h_source.html#l00034">mem.h:34</a></div></div>
<div class="ttc" id="amem_8h_html_a703fa791ab7a14ff983df73b15e9c620a63028bf12af38811e0cb3ec7fe35e897"><div class="ttname"><a href="mem_8h.html#a703fa791ab7a14ff983df73b15e9c620a63028bf12af38811e0cb3ec7fe35e897">COAP_CONTEXT</a></div><div class="ttdeci">@ COAP_CONTEXT</div><div class="ttdef"><b>Definition</b> <a href="mem_8h_source.html#l00035">mem.h:35</a></div></div>
<div class="ttc" id="amem_8h_html_a703fa791ab7a14ff983df73b15e9c620ab4e8cb3171f267b830d97626ad7a8d69"><div class="ttname"><a href="mem_8h.html#a703fa791ab7a14ff983df73b15e9c620ab4e8cb3171f267b830d97626ad7a8d69">COAP_PACKET</a></div><div class="ttdeci">@ COAP_PACKET</div><div class="ttdef"><b>Definition</b> <a href="mem_8h_source.html#l00033">mem.h:33</a></div></div>
<div class="ttc" id="amem_8h_html_a9f9fd8d6cf24f9c45a5501aeba5acaf9"><div class="ttname"><a href="mem_8h.html#a9f9fd8d6cf24f9c45a5501aeba5acaf9">coap_malloc_type</a></div><div class="ttdeci">void * coap_malloc_type(coap_memory_tag_t type, size_t size)</div><div class="ttdoc">Allocates a chunk of size bytes and returns a pointer to the newly allocated memory.</div></div>
<div class="ttc" id="amem_8h_html_ae7214e0c73a4d4290525873e739ed422"><div class="ttname"><a href="mem_8h.html#ae7214e0c73a4d4290525873e739ed422">coap_free_type</a></div><div class="ttdeci">void coap_free_type(coap_memory_tag_t type, void *p)</div><div class="ttdoc">Releases the memory that was allocated by coap_malloc_type().</div></div>
<div class="ttc" id="anet_8c_html_a0748d791fd2af516dd93fbadb660d440"><div class="ttname"><a href="net_8c.html#a0748d791fd2af516dd93fbadb660d440">coap_read</a></div><div class="ttdeci">void coap_read(coap_context_t *ctx, coap_tick_t now)</div><div class="ttdoc">For applications with their own message loop, reads all data from the network.</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l01319">net.c:1319</a></div></div>
<div class="ttc" id="anet_8c_html_a0ac65b37442b7b10d74dedeb7d25e737"><div class="ttname"><a href="net_8c.html#a0ac65b37442b7b10d74dedeb7d25e737">FRAC_BITS</a></div><div class="ttdeci">#define FRAC_BITS</div><div class="ttdoc">The number of bits for the fractional part of ACK_TIMEOUT and ACK_RANDOM_FACTOR.</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l00065">net.c:65</a></div></div>
<div class="ttc" id="anet_8c_html_a0c600aed61c8a8402d31ef795df3b0b6"><div class="ttname"><a href="net_8c.html#a0c600aed61c8a8402d31ef795df3b0b6">coap_send_pdu</a></div><div class="ttdeci">static ssize_t coap_send_pdu(coap_session_t *session, coap_pdu_t *pdu, coap_queue_t *node)</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l00655">net.c:655</a></div></div>
<div class="ttc" id="anet_8c_html_a116b4fec1683a94831f02b3e1a54dcac"><div class="ttname"><a href="net_8c.html#a116b4fec1683a94831f02b3e1a54dcac">coap_adjust_basetime</a></div><div class="ttdeci">unsigned int coap_adjust_basetime(coap_context_t *ctx, coap_tick_t now)</div><div class="ttdoc">Set sendqueue_basetime in the given context object ctx to now.</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l00151">net.c:151</a></div></div>
<div class="ttc" id="anet_8c_html_a157d58fe7840d7d7e36c40fff0825674"><div class="ttname"><a href="net_8c.html#a157d58fe7840d7d7e36c40fff0825674">coap_free_endpoint</a></div><div class="ttdeci">void coap_free_endpoint(coap_endpoint_t *ep)</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8c_source.html#l00901">coap_session.c:901</a></div></div>
<div class="ttc" id="anet_8c_html_a172ec052726c632427ea990a0ba04c60"><div class="ttname"><a href="net_8c.html#a172ec052726c632427ea990a0ba04c60">token_match</a></div><div class="ttdeci">COAP_STATIC_INLINE int token_match(const uint8_t *a, size_t alen, const uint8_t *b, size_t blen)</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l01441">net.c:1441</a></div></div>
<div class="ttc" id="anet_8c_html_a19fccec23349a25f5daa69fc231cb415"><div class="ttname"><a href="net_8c.html#a19fccec23349a25f5daa69fc231cb415">respond_t</a></div><div class="ttdeci">respond_t</div><div class="ttdoc">Internal flags to control the treatment of responses (specifically in presence of the No-Response opt...</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l01812">net.c:1812</a></div></div>
<div class="ttc" id="anet_8c_html_a19fccec23349a25f5daa69fc231cb415a94a97210dbcb738d9af4fd0de5f0aeff"><div class="ttname"><a href="net_8c.html#a19fccec23349a25f5daa69fc231cb415a94a97210dbcb738d9af4fd0de5f0aeff">RESPONSE_DROP</a></div><div class="ttdeci">@ RESPONSE_DROP</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l01812">net.c:1812</a></div></div>
<div class="ttc" id="anet_8c_html_a19fccec23349a25f5daa69fc231cb415a9eb4b37c5646776d1ad24355b3a6f745"><div class="ttname"><a href="net_8c.html#a19fccec23349a25f5daa69fc231cb415a9eb4b37c5646776d1ad24355b3a6f745">RESPONSE_DEFAULT</a></div><div class="ttdeci">@ RESPONSE_DEFAULT</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l01812">net.c:1812</a></div></div>
<div class="ttc" id="anet_8c_html_a19fccec23349a25f5daa69fc231cb415aa8afbd3e995f285f48169283105947e4"><div class="ttname"><a href="net_8c.html#a19fccec23349a25f5daa69fc231cb415aa8afbd3e995f285f48169283105947e4">RESPONSE_SEND</a></div><div class="ttdeci">@ RESPONSE_SEND</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l01812">net.c:1812</a></div></div>
<div class="ttc" id="anet_8c_html_a1a280312c4bad55cf10243b9b9c3e966"><div class="ttname"><a href="net_8c.html#a1a280312c4bad55cf10243b9b9c3e966">handle_request</a></div><div class="ttdeci">static void handle_request(coap_context_t *context, coap_session_t *session, coap_pdu_t *pdu)</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l01883">net.c:1883</a></div></div>
<div class="ttc" id="anet_8c_html_a1ab369ca0a3c4fe7f8a9e0536346ff71"><div class="ttname"><a href="net_8c.html#a1ab369ca0a3c4fe7f8a9e0536346ff71">coap_new_context</a></div><div class="ttdeci">coap_context_t * coap_new_context(const coap_address_t *listen_addr)</div><div class="ttdoc">Creates a new coap_context_t object that will hold the CoAP stack status.</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l00422">net.c:422</a></div></div>
<div class="ttc" id="anet_8c_html_a231e9a81ac7c03c3e5c251824a76d7b9"><div class="ttname"><a href="net_8c.html#a231e9a81ac7c03c3e5c251824a76d7b9">coap_can_exit</a></div><div class="ttdeci">int coap_can_exit(coap_context_t *context)</div><div class="ttdoc">Returns 1 if there are no messages to send or to dispatch in the context's queues.</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l02321">net.c:2321</a></div></div>
<div class="ttc" id="anet_8c_html_a2c1e86998c712346baf2d116dbf1ac7f"><div class="ttname"><a href="net_8c.html#a2c1e86998c712346baf2d116dbf1ac7f">coap_delete_all</a></div><div class="ttdeci">void coap_delete_all(coap_queue_t *queue)</div><div class="ttdoc">Removes all items from given queue and frees the allocated storage.</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l00245">net.c:245</a></div></div>
<div class="ttc" id="anet_8c_html_a3065434dae5c177558462dddc61d5514"><div class="ttname"><a href="net_8c.html#a3065434dae5c177558462dddc61d5514">coap_find_transaction</a></div><div class="ttdeci">coap_queue_t * coap_find_transaction(coap_queue_t *queue, coap_session_t *session, coap_tid_t id)</div><div class="ttdoc">Retrieves transaction from the queue.</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l01525">net.c:1525</a></div></div>
<div class="ttc" id="anet_8c_html_a32887948ee273d1ad464ec47df194910"><div class="ttname"><a href="net_8c.html#a32887948ee273d1ad464ec47df194910">coap_handle_dgram</a></div><div class="ttdeci">int coap_handle_dgram(coap_context_t *ctx, coap_session_t *session, uint8_t *msg, size_t msg_len)</div><div class="ttdoc">Parses and interprets a CoAP datagram with context ctx.</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l01369">net.c:1369</a></div></div>
<div class="ttc" id="anet_8c_html_a3e4402058bf2b1ef0b513175af4e600d"><div class="ttname"><a href="net_8c.html#a3e4402058bf2b1ef0b513175af4e600d">coap_default_uri_wellknown</a></div><div class="ttdeci">static coap_str_const_t coap_default_uri_wellknown</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l01878">net.c:1878</a></div></div>
<div class="ttc" id="anet_8c_html_a3e6893a08fe41f0ad6fbb84f14b10c36"><div class="ttname"><a href="net_8c.html#a3e6893a08fe41f0ad6fbb84f14b10c36">coap_context_set_pki</a></div><div class="ttdeci">int coap_context_set_pki(coap_context_t *ctx, coap_dtls_pki_t *setup_data)</div><div class="ttdoc">Set the context's default PKI information for a server.</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l00392">net.c:392</a></div></div>
<div class="ttc" id="anet_8c_html_a44c39a2314035989d3e07b9d9328e08c"><div class="ttname"><a href="net_8c.html#a44c39a2314035989d3e07b9d9328e08c">coap_delete_node</a></div><div class="ttdeci">int coap_delete_node(coap_queue_t *node)</div><div class="ttdoc">Destroys specified node.</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l00225">net.c:225</a></div></div>
<div class="ttc" id="anet_8c_html_a44ffb4b70e537043e9a9cf344be24b92"><div class="ttname"><a href="net_8c.html#a44ffb4b70e537043e9a9cf344be24b92">coap_read_endpoint</a></div><div class="ttdeci">static int coap_read_endpoint(coap_context_t *ctx, coap_endpoint_t *endpoint, coap_tick_t now)</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l01256">net.c:1256</a></div></div>
<div class="ttc" id="anet_8c_html_a480a3e967feaf00778dedf4c2fc68bd2"><div class="ttname"><a href="net_8c.html#a480a3e967feaf00778dedf4c2fc68bd2">coap_remove_from_queue</a></div><div class="ttdeci">int coap_remove_from_queue(coap_queue_t **queue, coap_session_t *session, coap_tid_t id, coap_queue_t **node)</div><div class="ttdoc">This function removes the element with given id from the list given list.</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l01397">net.c:1397</a></div></div>
<div class="ttc" id="anet_8c_html_a4a0717822713783908dd33d300440b2e"><div class="ttname"><a href="net_8c.html#a4a0717822713783908dd33d300440b2e">coap_free_context</a></div><div class="ttdeci">void coap_free_context(coap_context_t *context)</div><div class="ttdoc">CoAP stack context must be released with coap_free_context().</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l00518">net.c:518</a></div></div>
<div class="ttc" id="anet_8c_html_a4a9f7d31eafd7d82776f9b1a9291eea0"><div class="ttname"><a href="net_8c.html#a4a9f7d31eafd7d82776f9b1a9291eea0">coap_peek_next</a></div><div class="ttdeci">coap_queue_t * coap_peek_next(coap_context_t *context)</div><div class="ttdoc">Returns the next pdu to send without removing from sendqeue.</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l00270">net.c:270</a></div></div>
<div class="ttc" id="anet_8c_html_a4b9a31728201d9c7c032513a185854ff"><div class="ttname"><a href="net_8c.html#a4b9a31728201d9c7c032513a185854ff">coap_wellknown_response</a></div><div class="ttdeci">coap_pdu_t * coap_wellknown_response(coap_context_t *context, coap_session_t *session, coap_pdu_t *request)</div><div class="ttdoc">Creates a new response for given request with the contents of .well-known/core.</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l01649">net.c:1649</a></div></div>
<div class="ttc" id="anet_8c_html_a4dc6e755dca2ca804e8700f398f4c329"><div class="ttname"><a href="net_8c.html#a4dc6e755dca2ca804e8700f398f4c329">get_wkc_len</a></div><div class="ttdeci">COAP_STATIC_INLINE size_t get_wkc_len(coap_context_t *context, coap_opt_t *query_filter)</div><div class="ttdoc">Quick hack to determine the size of the resource description for .well-known/core.</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l01631">net.c:1631</a></div></div>
<div class="ttc" id="anet_8c_html_a51c241e7ad52441b8d4c1fd5f498b3b9"><div class="ttname"><a href="net_8c.html#a51c241e7ad52441b8d4c1fd5f498b3b9">MAX_BITS</a></div><div class="ttdeci">#define MAX_BITS</div><div class="ttdoc">The maximum number of bits for fixed point integers that are used for retransmission time calculation...</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l00071">net.c:71</a></div></div>
<div class="ttc" id="anet_8c_html_a59140d9e3d88e6799879b6e4153b48a3"><div class="ttname"><a href="net_8c.html#a59140d9e3d88e6799879b6e4153b48a3">coap_get_session_client_psk</a></div><div class="ttdeci">static size_t coap_get_session_client_psk(const coap_session_t *session, const uint8_t *hint, size_t hint_len, uint8_t *identity, size_t *identity_len, size_t max_identity_len, uint8_t *psk, size_t max_psk_len)</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l00294">net.c:294</a></div></div>
<div class="ttc" id="anet_8c_html_a5d1fb0b44497970b0f75fa0b38570a82"><div class="ttname"><a href="net_8c.html#a5d1fb0b44497970b0f75fa0b38570a82">coap_cleanup</a></div><div class="ttdeci">void coap_cleanup(void)</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l02363">net.c:2363</a></div></div>
<div class="ttc" id="anet_8c_html_a5e2cee998ccf618ac07aa54f5e5f8743"><div class="ttname"><a href="net_8c.html#a5e2cee998ccf618ac07aa54f5e5f8743">coap_handle_event</a></div><div class="ttdeci">int coap_handle_event(coap_context_t *context, coap_event_t event, coap_session_t *session)</div><div class="ttdoc">Invokes the event handler of context for the given event and data.</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l02310">net.c:2310</a></div></div>
<div class="ttc" id="anet_8c_html_a5e53751a27267574b92f23d01951a259"><div class="ttname"><a href="net_8c.html#a5e53751a27267574b92f23d01951a259">ACK_TIMEOUT</a></div><div class="ttdeci">#define ACK_TIMEOUT</div><div class="ttdoc">creates a Qx.FRAC_BITS from session's 'ack_timeout'</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l00086">net.c:86</a></div></div>
<div class="ttc" id="anet_8c_html_a641a52ad5cdf4da5859aa7fc0e5fdf95"><div class="ttname"><a href="net_8c.html#a641a52ad5cdf4da5859aa7fc0e5fdf95">SZX_TO_BYTES</a></div><div class="ttdeci">#define SZX_TO_BYTES(SZX)</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l01646">net.c:1646</a></div></div>
<div class="ttc" id="anet_8c_html_a66445578ff7073e4add30c588f0625f6"><div class="ttname"><a href="net_8c.html#a66445578ff7073e4add30c588f0625f6">coap_get_context_server_psk</a></div><div class="ttdeci">static size_t coap_get_context_server_psk(const coap_session_t *session, const uint8_t *identity, size_t identity_len, uint8_t *psk, size_t max_psk_len)</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l00321">net.c:321</a></div></div>
<div class="ttc" id="anet_8c_html_a6aa830b46188549b51773f724eb8e752"><div class="ttname"><a href="net_8c.html#a6aa830b46188549b51773f724eb8e752">coap_send_message_type</a></div><div class="ttdeci">coap_tid_t coap_send_message_type(coap_session_t *session, coap_pdu_t *request, unsigned char type)</div><div class="ttdoc">Helper funktion to create and send a message with type (usually ACK or RST).</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l00772">net.c:772</a></div></div>
<div class="ttc" id="anet_8c_html_a6b355153e3bba3af3df1e72f33ced85c"><div class="ttname"><a href="net_8c.html#a6b355153e3bba3af3df1e72f33ced85c">coap_cancel</a></div><div class="ttdeci">static int coap_cancel(coap_context_t *context, const coap_queue_t *sent)</div><div class="ttdoc">This function cancels outstanding messages for the session and token specified in sent.</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l01786">net.c:1786</a></div></div>
<div class="ttc" id="anet_8c_html_a73dd0093b2de859341ebbb375b0efad5"><div class="ttname"><a href="net_8c.html#a73dd0093b2de859341ebbb375b0efad5">coap_started</a></div><div class="ttdeci">static int coap_started</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l02341">net.c:2341</a></div></div>
<div class="ttc" id="anet_8c_html_a740acba1e579ecec3c67eca3b7522164"><div class="ttname"><a href="net_8c.html#a740acba1e579ecec3c67eca3b7522164">coap_pop_next</a></div><div class="ttdeci">coap_queue_t * coap_pop_next(coap_context_t *context)</div><div class="ttdoc">Returns the next pdu to send and removes it from the sendqeue.</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l00278">net.c:278</a></div></div>
<div class="ttc" id="anet_8c_html_a7437c90770ffd13685e6a77799b4753b"><div class="ttname"><a href="net_8c.html#a7437c90770ffd13685e6a77799b4753b">coap_accept_endpoint</a></div><div class="ttdeci">static int coap_accept_endpoint(coap_context_t *ctx, coap_endpoint_t *endpoint, coap_tick_t now)</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l01310">net.c:1310</a></div></div>
<div class="ttc" id="anet_8c_html_a7bb944fc52f772655356d95724317401"><div class="ttname"><a href="net_8c.html#a7bb944fc52f772655356d95724317401">coap_dispatch</a></div><div class="ttdeci">void coap_dispatch(coap_context_t *context, coap_session_t *session, coap_pdu_t *pdu)</div><div class="ttdoc">Dispatches the PDUs from the receive queue in given context.</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l02169">net.c:2169</a></div></div>
<div class="ttc" id="anet_8c_html_a7bee391c13b539a24d9f74b2fc23e08a"><div class="ttname"><a href="net_8c.html#a7bee391c13b539a24d9f74b2fc23e08a">coap_wait_ack</a></div><div class="ttdeci">coap_tid_t coap_wait_ack(coap_context_t *context, coap_session_t *session, coap_queue_t *node)</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l00824">net.c:824</a></div></div>
<div class="ttc" id="anet_8c_html_a80d2c3b0141e98bf3f7914e7e59b9530"><div class="ttname"><a href="net_8c.html#a80d2c3b0141e98bf3f7914e7e59b9530">coap_insert_node</a></div><div class="ttdeci">int coap_insert_node(coap_queue_t **queue, coap_queue_t *node)</div><div class="ttdoc">Adds node to given queue, ordered by variable t in node.</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l00188">net.c:188</a></div></div>
<div class="ttc" id="anet_8c_html_a80fe575cbbf1ef5468165c3b94aabad4"><div class="ttname"><a href="net_8c.html#a80fe575cbbf1ef5468165c3b94aabad4">coap_get_context_server_hint</a></div><div class="ttdeci">static size_t coap_get_context_server_hint(const coap_session_t *session, uint8_t *hint, size_t max_hint_len)</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l00337">net.c:337</a></div></div>
<div class="ttc" id="anet_8c_html_a816e87e31e2b90ada89eed085f016d93"><div class="ttname"><a href="net_8c.html#a816e87e31e2b90ada89eed085f016d93">coap_calc_timeout</a></div><div class="ttdeci">unsigned int coap_calc_timeout(coap_session_t *session, unsigned char r)</div><div class="ttdoc">Calculates the initial timeout based on the session CoAP transmission parameters 'ack_timeout',...</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l00798">net.c:798</a></div></div>
<div class="ttc" id="anet_8c_html_a823b9397a80e37f7ae87a5581430c507"><div class="ttname"><a href="net_8c.html#a823b9397a80e37f7ae87a5581430c507">coap_write_endpoint</a></div><div class="ttdeci">static int coap_write_endpoint(coap_context_t *ctx, coap_endpoint_t *endpoint, coap_tick_t now)</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l01302">net.c:1302</a></div></div>
<div class="ttc" id="anet_8c_html_a8534f7860b14e0743529daff196a27ce"><div class="ttname"><a href="net_8c.html#a8534f7860b14e0743529daff196a27ce">coap_handle_dgram_for_proto</a></div><div class="ttdeci">static int coap_handle_dgram_for_proto(coap_context_t *ctx, coap_session_t *session, coap_packet_t *packet)</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l01024">net.c:1024</a></div></div>
<div class="ttc" id="anet_8c_html_a8fe30a827bdd0d518fc5c5a3a860dfde"><div class="ttname"><a href="net_8c.html#a8fe30a827bdd0d518fc5c5a3a860dfde">coap_write_session</a></div><div class="ttdeci">static void coap_write_session(coap_context_t *ctx, coap_session_t *session, coap_tick_t now)</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l01071">net.c:1071</a></div></div>
<div class="ttc" id="anet_8c_html_a9900c032b74bd57f67d489484a2b3207"><div class="ttname"><a href="net_8c.html#a9900c032b74bd57f67d489484a2b3207">coap_retransmit</a></div><div class="ttdeci">coap_tid_t coap_retransmit(coap_context_t *context, coap_queue_t *node)</div><div class="ttdoc">Handles retransmissions of confirmable messages.</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l00931">net.c:931</a></div></div>
<div class="ttc" id="anet_8c_html_a9c6736c0418c3adf5e7f6fb76f000cfe"><div class="ttname"><a href="net_8c.html#a9c6736c0418c3adf5e7f6fb76f000cfe">coap_option_check_critical</a></div><div class="ttdeci">int coap_option_check_critical(coap_context_t *ctx, coap_pdu_t *pdu, coap_opt_filter_t unknown)</div><div class="ttdoc">Verifies that pdu contains no unknown critical options.</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l00561">net.c:561</a></div></div>
<div class="ttc" id="anet_8c_html_a9e7c7fc083799c942c9c44ebc190c833"><div class="ttname"><a href="net_8c.html#a9e7c7fc083799c942c9c44ebc190c833">coap_connect_session</a></div><div class="ttdeci">static void coap_connect_session(coap_context_t *ctx, coap_session_t *session, coap_tick_t now)</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l01043">net.c:1043</a></div></div>
<div class="ttc" id="anet_8c_html_aa2f296838e4a779197c43b254e385ddc"><div class="ttname"><a href="net_8c.html#aa2f296838e4a779197c43b254e385ddc">coap_free_node</a></div><div class="ttdeci">COAP_STATIC_INLINE void coap_free_node(coap_queue_t *node)</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l00096">net.c:96</a></div></div>
<div class="ttc" id="anet_8c_html_aa54bb684429ee455f119fc5fb1feb197"><div class="ttname"><a href="net_8c.html#aa54bb684429ee455f119fc5fb1feb197">coap_new_error_response</a></div><div class="ttdeci">coap_pdu_t * coap_new_error_response(coap_pdu_t *request, unsigned char code, coap_opt_filter_t opts)</div><div class="ttdoc">Creates a new ACK PDU with specified error code.</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l01533">net.c:1533</a></div></div>
<div class="ttc" id="anet_8c_html_aa708f479d33a6ca76bf214a0e0e42de4"><div class="ttname"><a href="net_8c.html#aa708f479d33a6ca76bf214a0e0e42de4">no_response</a></div><div class="ttdeci">static enum respond_t no_response(coap_pdu_t *request, coap_pdu_t *response)</div><div class="ttdoc">Checks for No-Response option in given request and returns 1 if response should be suppressed accordi...</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l01845">net.c:1845</a></div></div>
<div class="ttc" id="anet_8c_html_aad4939d0311c2ba59cb097bc236fada1"><div class="ttname"><a href="net_8c.html#aad4939d0311c2ba59cb097bc236fada1">coap_context_set_psk</a></div><div class="ttdeci">int coap_context_set_psk(coap_context_t *ctx, const char *hint, const uint8_t *key, size_t key_len)</div><div class="ttdoc">Set the context's default PSK hint and/or key for a server.</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l00349">net.c:349</a></div></div>
<div class="ttc" id="anet_8c_html_aae36aa264dea395214cf7aabcee5fcd9"><div class="ttname"><a href="net_8c.html#aae36aa264dea395214cf7aabcee5fcd9">coap_set_app_data</a></div><div class="ttdeci">void coap_set_app_data(coap_context_t *ctx, void *app_data)</div><div class="ttdoc">Stores data with the given CoAP context.</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l00506">net.c:506</a></div></div>
<div class="ttc" id="anet_8c_html_aaf20c9b0b2ad3168c15e535a67ea3ce5"><div class="ttname"><a href="net_8c.html#aaf20c9b0b2ad3168c15e535a67ea3ce5">coap_session_send_pdu</a></div><div class="ttdeci">ssize_t coap_session_send_pdu(coap_session_t *session, coap_pdu_t *pdu)</div><div class="ttdoc">Send a pdu according to the session's protocol.</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l00627">net.c:627</a></div></div>
<div class="ttc" id="anet_8c_html_ab0b0b5db03427c4313c01ec2b12cf8ed"><div class="ttname"><a href="net_8c.html#ab0b0b5db03427c4313c01ec2b12cf8ed">coap_send</a></div><div class="ttdeci">coap_tid_t coap_send(coap_session_t *session, coap_pdu_t *pdu)</div><div class="ttdoc">Sends a CoAP message to given peer.</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l00876">net.c:876</a></div></div>
<div class="ttc" id="anet_8c_html_ab0ffe6312ad95fb07b0212f912cf196c"><div class="ttname"><a href="net_8c.html#ab0ffe6312ad95fb07b0212f912cf196c">coap_cancel_all_messages</a></div><div class="ttdeci">void coap_cancel_all_messages(coap_context_t *context, coap_session_t *session, const uint8_t *token, size_t token_length)</div><div class="ttdoc">Cancels all outstanding messages for session session that have the specified token.</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l01484">net.c:1484</a></div></div>
<div class="ttc" id="anet_8c_html_ab31cd76353f751ec4dc5c033152df575"><div class="ttname"><a href="net_8c.html#ab31cd76353f751ec4dc5c033152df575">coap_send_error</a></div><div class="ttdeci">coap_tid_t coap_send_error(coap_session_t *session, coap_pdu_t *request, unsigned char code, coap_opt_filter_t opts)</div><div class="ttdoc">Sends an error response with code code for request request to dst.</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l00754">net.c:754</a></div></div>
<div class="ttc" id="anet_8c_html_ab7637b4488a03cae08c1115a21c16140"><div class="ttname"><a href="net_8c.html#ab7637b4488a03cae08c1115a21c16140">SHR_FP</a></div><div class="ttdeci">#define SHR_FP(val, frac)</div></div>
<div class="ttc" id="anet_8c_html_aba278b109415057d15196fa46afee970"><div class="ttname"><a href="net_8c.html#aba278b109415057d15196fa46afee970">coap_send_ack</a></div><div class="ttdeci">coap_tid_t coap_send_ack(coap_session_t *session, coap_pdu_t *request)</div><div class="ttdoc">Sends an ACK message with code 0 for the specified request to dst.</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l00613">net.c:613</a></div></div>
<div class="ttc" id="anet_8c_html_ababc09609357f4709af861071fa6275f"><div class="ttname"><a href="net_8c.html#ababc09609357f4709af861071fa6275f">coap_get_app_data</a></div><div class="ttdeci">void * coap_get_app_data(const coap_context_t *ctx)</div><div class="ttdoc">Returns any application-specific data that has been stored with context using the function coap_set_a...</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l00512">net.c:512</a></div></div>
<div class="ttc" id="anet_8c_html_ac4cbcfd073489b57805db665ce3d0681"><div class="ttname"><a href="net_8c.html#ac4cbcfd073489b57805db665ce3d0681">handle_signaling</a></div><div class="ttdeci">static void handle_signaling(coap_context_t *context, coap_session_t *session, coap_pdu_t *pdu)</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l02129">net.c:2129</a></div></div>
<div class="ttc" id="anet_8c_html_ac6afabdc09a49a433ee19d8a9486056d"><div class="ttname"><a href="net_8c.html#ac6afabdc09a49a433ee19d8a9486056d">min</a></div><div class="ttdeci">#define min(a, b)</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l00058">net.c:58</a></div></div>
<div class="ttc" id="anet_8c_html_acc875c3095491f3835f4d252bd72999d"><div class="ttname"><a href="net_8c.html#acc875c3095491f3835f4d252bd72999d">coap_context_set_keepalive</a></div><div class="ttdeci">void coap_context_set_keepalive(coap_context_t *context, unsigned int seconds)</div><div class="ttdoc">Set the context keepalive timer for sessions.</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l00417">net.c:417</a></div></div>
<div class="ttc" id="anet_8c_html_acd36f6fba6d30ab9557e0e6521f4a088"><div class="ttname"><a href="net_8c.html#acd36f6fba6d30ab9557e0e6521f4a088">coap_read_session</a></div><div class="ttdeci">static void coap_read_session(coap_context_t *ctx, coap_session_t *session, coap_tick_t now)</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l01126">net.c:1126</a></div></div>
<div class="ttc" id="anet_8c_html_aceceb550566e0ab9e184d09604a73bb6"><div class="ttname"><a href="net_8c.html#aceceb550566e0ab9e184d09604a73bb6">coap_startup</a></div><div class="ttdeci">void coap_startup(void)</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l02343">net.c:2343</a></div></div>
<div class="ttc" id="anet_8c_html_ad76ef4794cfee9fd5d3cd65e30f77b5d"><div class="ttname"><a href="net_8c.html#ad76ef4794cfee9fd5d3cd65e30f77b5d">coap_malloc_node</a></div><div class="ttdeci">COAP_STATIC_INLINE coap_queue_t * coap_malloc_node(void)</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l00091">net.c:91</a></div></div>
<div class="ttc" id="anet_8c_html_adbf4c617bdb13f0b61f83dca2ecdcc9e"><div class="ttname"><a href="net_8c.html#adbf4c617bdb13f0b61f83dca2ecdcc9e">coap_new_node</a></div><div class="ttdeci">coap_queue_t * coap_new_node(void)</div><div class="ttdoc">Creates a new node suitable for adding to the CoAP sendqueue.</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l00254">net.c:254</a></div></div>
<div class="ttc" id="anet_8c_html_add0197ad2daf24535c85e0ba1d28f099"><div class="ttname"><a href="net_8c.html#add0197ad2daf24535c85e0ba1d28f099">coap_cancel_session_messages</a></div><div class="ttdeci">void coap_cancel_session_messages(coap_context_t *context, coap_session_t *session, coap_nack_reason_t reason)</div><div class="ttdoc">Cancels all outstanding messages for session session.</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l01447">net.c:1447</a></div></div>
<div class="ttc" id="anet_8c_html_add95b1f9de12dcad0e43d46c50e2feb0"><div class="ttname"><a href="net_8c.html#add95b1f9de12dcad0e43d46c50e2feb0">FP1</a></div><div class="ttdeci">#define FP1</div></div>
<div class="ttc" id="anet_8c_html_aec68afda9ae15e22114f0bec81785f6f"><div class="ttname"><a href="net_8c.html#aec68afda9ae15e22114f0bec81785f6f">coap_context_set_pki_root_cas</a></div><div class="ttdeci">int coap_context_set_pki_root_cas(coap_context_t *ctx, const char *ca_file, const char *ca_dir)</div><div class="ttdoc">Set the context's default Root CA information for a client or server.</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l00407">net.c:407</a></div></div>
<div class="ttc" id="anet_8c_html_aef339b3c4338bdb86736d679dc944b9e"><div class="ttname"><a href="net_8c.html#aef339b3c4338bdb86736d679dc944b9e">ACK_RANDOM_FACTOR</a></div><div class="ttdeci">#define ACK_RANDOM_FACTOR</div><div class="ttdoc">creates a Qx.FRAC_BITS from session's 'ack_random_factor'</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l00082">net.c:82</a></div></div>
<div class="ttc" id="anet_8c_html_af838d89087ad96495f8ed7f1a9297168"><div class="ttname"><a href="net_8c.html#af838d89087ad96495f8ed7f1a9297168">handle_response</a></div><div class="ttdeci">static void handle_response(coap_context_t *context, coap_session_t *session, coap_pdu_t *sent, coap_pdu_t *rcvd)</div><div class="ttdef"><b>Definition</b> <a href="net_8c_source.html#l02111">net.c:2111</a></div></div>
<div class="ttc" id="anet_8h_html"><div class="ttname"><a href="net_8h.html">net.h</a></div></div>
<div class="ttc" id="aoption_8h_html"><div class="ttname"><a href="option_8h.html">option.h</a></div><div class="ttdoc">Helpers for handling options in CoAP PDUs.</div></div>
<div class="ttc" id="aoption_8h_html_a963ad4994625360a5ac70d9df2ab5412"><div class="ttname"><a href="option_8h.html#a963ad4994625360a5ac70d9df2ab5412">coap_opt_t</a></div><div class="ttdeci">uint8_t coap_opt_t</div><div class="ttdoc">Use byte-oriented access methods here because sliding a complex struct coap_opt_t over the data buffe...</div><div class="ttdef"><b>Definition</b> <a href="option_8h_source.html#l00025">option.h:25</a></div></div>
<div class="ttc" id="apdu_8c_html_a0820d2413f167cd92f8267bf0aaa6ecb"><div class="ttname"><a href="pdu_8c.html#a0820d2413f167cd92f8267bf0aaa6ecb">coap_response_phrase</a></div><div class="ttdeci">const char * coap_response_phrase(unsigned char code)</div><div class="ttdoc">Returns a human-readable response phrase for the specified CoAP response code.</div><div class="ttdef"><b>Definition</b> <a href="pdu_8c_source.html#l00384">pdu.c:384</a></div></div>
<div class="ttc" id="apdu_8c_html_a3b73fa26504e7a8da604375d1146b7e3"><div class="ttname"><a href="pdu_8c.html#a3b73fa26504e7a8da604375d1146b7e3">coap_add_data_after</a></div><div class="ttdeci">uint8_t * coap_add_data_after(coap_pdu_t *pdu, size_t len)</div><div class="ttdoc">Adds given data to the pdu that is passed as first parameter but does not copyt it.</div><div class="ttdef"><b>Definition</b> <a href="pdu_8c_source.html#l00314">pdu.c:314</a></div></div>
<div class="ttc" id="apdu_8c_html_a48581f968a30ef4278702eb1c16b7a90"><div class="ttname"><a href="pdu_8c.html#a48581f968a30ef4278702eb1c16b7a90">coap_delete_pdu</a></div><div class="ttdeci">void coap_delete_pdu(coap_pdu_t *pdu)</div><div class="ttdoc">Dispose of an CoAP PDU and frees associated storage.</div><div class="ttdef"><b>Definition</b> <a href="pdu_8c_source.html#l00141">pdu.c:141</a></div></div>
<div class="ttc" id="apdu_8c_html_a4f019ad11b0f633524175488aecbd7d1"><div class="ttname"><a href="pdu_8c.html#a4f019ad11b0f633524175488aecbd7d1">coap_pdu_init</a></div><div class="ttdeci">coap_pdu_t * coap_pdu_init(uint8_t type, uint8_t code, uint16_t tid, size_t size)</div><div class="ttdoc">Creates a new CoAP PDU with at least enough storage space for the given size maximum message size.</div><div class="ttdef"><b>Definition</b> <a href="pdu_8c_source.html#l00091">pdu.c:91</a></div></div>
<div class="ttc" id="apdu_8c_html_a516ac8dae1f2fe33963f80cf15ec59a0"><div class="ttname"><a href="pdu_8c.html#a516ac8dae1f2fe33963f80cf15ec59a0">coap_pdu_parse_header</a></div><div class="ttdeci">int coap_pdu_parse_header(coap_pdu_t *pdu, coap_proto_t proto)</div><div class="ttdoc">Decode the protocol specific header for the specified PDU.</div><div class="ttdef"><b>Definition</b> <a href="pdu_8c_source.html#l00474">pdu.c:474</a></div></div>
<div class="ttc" id="apdu_8c_html_a53c48f11ca3bc0d2106bd8b76f7430c8"><div class="ttname"><a href="pdu_8c.html#a53c48f11ca3bc0d2106bd8b76f7430c8">coap_pdu_parse_header_size</a></div><div class="ttdeci">size_t coap_pdu_parse_header_size(coap_proto_t proto, const uint8_t *data)</div><div class="ttdoc">Interprets data to determine the number of bytes in the header.</div><div class="ttdef"><b>Definition</b> <a href="pdu_8c_source.html#l00419">pdu.c:419</a></div></div>
<div class="ttc" id="apdu_8c_html_a923f81168ccbbaac1a4ca50837d7be94"><div class="ttname"><a href="pdu_8c.html#a923f81168ccbbaac1a4ca50837d7be94">coap_add_token</a></div><div class="ttdeci">int coap_add_token(coap_pdu_t *pdu, size_t len, const uint8_t *data)</div><div class="ttdoc">Adds token of length len to pdu.</div><div class="ttdef"><b>Definition</b> <a href="pdu_8c_source.html#l00205">pdu.c:205</a></div></div>
<div class="ttc" id="apdu_8c_html_aa1314f60fbc25733cfabaa975adc5aae"><div class="ttname"><a href="pdu_8c.html#aa1314f60fbc25733cfabaa975adc5aae">coap_add_option</a></div><div class="ttdeci">size_t coap_add_option(coap_pdu_t *pdu, uint16_t type, size_t len, const uint8_t *data)</div><div class="ttdoc">Adds option of given type to pdu that is passed as first parameter.</div><div class="ttdef"><b>Definition</b> <a href="pdu_8c_source.html#l00229">pdu.c:229</a></div></div>
<div class="ttc" id="apdu_8c_html_aa7fbcbe0f8d7415e82447747abf31d51"><div class="ttname"><a href="pdu_8c.html#aa7fbcbe0f8d7415e82447747abf31d51">coap_pdu_parse_opt</a></div><div class="ttdeci">int coap_pdu_parse_opt(coap_pdu_t *pdu)</div><div class="ttdoc">Verify consistency in the given CoAP PDU structure and locate the data.</div><div class="ttdef"><b>Definition</b> <a href="pdu_8c_source.html#l00506">pdu.c:506</a></div></div>
<div class="ttc" id="apdu_8c_html_ab5e81fe5717f977c62b7ef427d946c35"><div class="ttname"><a href="pdu_8c.html#ab5e81fe5717f977c62b7ef427d946c35">coap_pdu_encode_header</a></div><div class="ttdeci">size_t coap_pdu_encode_header(coap_pdu_t *pdu, coap_proto_t proto)</div><div class="ttdoc">Compose the protocol specific header for the specified PDU.</div><div class="ttdef"><b>Definition</b> <a href="pdu_8c_source.html#l00582">pdu.c:582</a></div></div>
<div class="ttc" id="apdu_8c_html_ab9981ea277da8bc4e5c4f82d6ca4c006"><div class="ttname"><a href="pdu_8c.html#ab9981ea277da8bc4e5c4f82d6ca4c006">coap_pdu_parse</a></div><div class="ttdeci">int coap_pdu_parse(coap_proto_t proto, const uint8_t *data, size_t length, coap_pdu_t *pdu)</div><div class="ttdoc">Parses data into the CoAP PDU structure given in result.</div><div class="ttdef"><b>Definition</b> <a href="pdu_8c_source.html#l00557">pdu.c:557</a></div></div>
<div class="ttc" id="apdu_8c_html_ad9460a91b9a9747bc85ff8e48a00f4d1"><div class="ttname"><a href="pdu_8c.html#ad9460a91b9a9747bc85ff8e48a00f4d1">coap_pdu_parse_size</a></div><div class="ttdeci">size_t coap_pdu_parse_size(coap_proto_t proto, const uint8_t *data, size_t length)</div><div class="ttdoc">Parses data to extract the message size.</div><div class="ttdef"><b>Definition</b> <a href="pdu_8c_source.html#l00442">pdu.c:442</a></div></div>
<div class="ttc" id="apdu_8c_html_add46ce956878a4121e8887b84c6d4a6b"><div class="ttname"><a href="pdu_8c.html#add46ce956878a4121e8887b84c6d4a6b">coap_pdu_resize</a></div><div class="ttdeci">int coap_pdu_resize(coap_pdu_t *pdu, size_t new_size)</div><div class="ttdoc">Dynamically grows the size of pdu to new_size.</div><div class="ttdef"><b>Definition</b> <a href="pdu_8c_source.html#l00154">pdu.c:154</a></div></div>
<div class="ttc" id="apdu_8c_html_af71a3f810ab9f0f657c25c425826af40"><div class="ttname"><a href="pdu_8c.html#af71a3f810ab9f0f657c25c425826af40">coap_add_data</a></div><div class="ttdeci">int coap_add_data(coap_pdu_t *pdu, size_t len, const uint8_t *data)</div><div class="ttdoc">Adds given data to the pdu that is passed as first parameter.</div><div class="ttdef"><b>Definition</b> <a href="pdu_8c_source.html#l00302">pdu.c:302</a></div></div>
<div class="ttc" id="apdu_8h_html_a0010b10bed3bccbb58cf47640ca61271"><div class="ttname"><a href="pdu_8h.html#a0010b10bed3bccbb58cf47640ca61271">COAP_PDU_IS_RESPONSE</a></div><div class="ttdeci">#define COAP_PDU_IS_RESPONSE(pdu)</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00312">pdu.h:312</a></div></div>
<div class="ttc" id="apdu_8h_html_a01d1357aea9ab79457f45e85b4f8a6ad"><div class="ttname"><a href="pdu_8h.html#a01d1357aea9ab79457f45e85b4f8a6ad">COAP_OPTION_NORESPONSE</a></div><div class="ttdeci">#define COAP_OPTION_NORESPONSE</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00122">pdu.h:122</a></div></div>
<div class="ttc" id="apdu_8h_html_a043c21277934001eacf3d14c0afb7485"><div class="ttname"><a href="pdu_8h.html#a043c21277934001eacf3d14c0afb7485">COAP_OPTION_URI_HOST</a></div><div class="ttdeci">#define COAP_OPTION_URI_HOST</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00093">pdu.h:93</a></div></div>
<div class="ttc" id="apdu_8h_html_a046abe3d186a48612d11b098c515c33e"><div class="ttname"><a href="pdu_8h.html#a046abe3d186a48612d11b098c515c33e">COAP_OPTION_IF_MATCH</a></div><div class="ttdeci">#define COAP_OPTION_IF_MATCH</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00092">pdu.h:92</a></div></div>
<div class="ttc" id="apdu_8h_html_a078cdb892664dd5f7ea708b7f403fa8d"><div class="ttname"><a href="pdu_8h.html#a078cdb892664dd5f7ea708b7f403fa8d">COAP_OPTION_BLOCK2</a></div><div class="ttdeci">#define COAP_OPTION_BLOCK2</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00117">pdu.h:117</a></div></div>
<div class="ttc" id="apdu_8h_html_a0d3a394e19dd218d3dc6681bbae4cb08"><div class="ttname"><a href="pdu_8h.html#a0d3a394e19dd218d3dc6681bbae4cb08">COAP_OPTION_CONTENT_FORMAT</a></div><div class="ttdeci">#define COAP_OPTION_CONTENT_FORMAT</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00099">pdu.h:99</a></div></div>
<div class="ttc" id="apdu_8h_html_a1dd5fe6cc335ea31d49f3eb469a5990a"><div class="ttname"><a href="pdu_8h.html#a1dd5fe6cc335ea31d49f3eb469a5990a">COAP_PROTO_TCP</a></div><div class="ttdeci">#define COAP_PROTO_TCP</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00344">pdu.h:344</a></div></div>
<div class="ttc" id="apdu_8h_html_a235851793201aed201b79926c0d9377f"><div class="ttname"><a href="pdu_8h.html#a235851793201aed201b79926c0d9377f">COAP_OPTION_BLOCK1</a></div><div class="ttdeci">#define COAP_OPTION_BLOCK1</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00118">pdu.h:118</a></div></div>
<div class="ttc" id="apdu_8h_html_a2fee152a1b03b715502c7a2db64d4f97"><div class="ttname"><a href="pdu_8h.html#a2fee152a1b03b715502c7a2db64d4f97">COAP_OPTION_PROXY_SCHEME</a></div><div class="ttdeci">#define COAP_OPTION_PROXY_SCHEME</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00107">pdu.h:107</a></div></div>
<div class="ttc" id="apdu_8h_html_a347c9249800d5f80f75dbc7d3df96bb0"><div class="ttname"><a href="pdu_8h.html#a347c9249800d5f80f75dbc7d3df96bb0">COAP_DEFAULT_PORT</a></div><div class="ttdeci">#define COAP_DEFAULT_PORT</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00028">pdu.h:28</a></div></div>
<div class="ttc" id="apdu_8h_html_a3920fed2c2ffc3b40a9e495e47dfe17f"><div class="ttname"><a href="pdu_8h.html#a3920fed2c2ffc3b40a9e495e47dfe17f">COAP_SIGNALING_PONG</a></div><div class="ttdeci">#define COAP_SIGNALING_PONG</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00182">pdu.h:182</a></div></div>
<div class="ttc" id="apdu_8h_html_a41904e7f47afc7036b2841f770240820"><div class="ttname"><a href="pdu_8h.html#a41904e7f47afc7036b2841f770240820">COAP_OPTION_URI_QUERY</a></div><div class="ttdeci">#define COAP_OPTION_URI_QUERY</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00102">pdu.h:102</a></div></div>
<div class="ttc" id="apdu_8h_html_a489f4c3eb8344011cbc20bd0768d14ad"><div class="ttname"><a href="pdu_8h.html#a489f4c3eb8344011cbc20bd0768d14ad">COAP_DROPPED_RESPONSE</a></div><div class="ttdeci">#define COAP_DROPPED_RESPONSE</div><div class="ttdoc">Indicates that a response is suppressed.</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00247">pdu.h:247</a></div></div>
<div class="ttc" id="apdu_8h_html_a5324af9001287706f4742f67a7efba41"><div class="ttname"><a href="pdu_8h.html#a5324af9001287706f4742f67a7efba41">COAP_OPTION_IF_NONE_MATCH</a></div><div class="ttdeci">#define COAP_OPTION_IF_NONE_MATCH</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00095">pdu.h:95</a></div></div>
<div class="ttc" id="apdu_8h_html_a5d4d36bdff1d1b8fe2edf092462eb2c7"><div class="ttname"><a href="pdu_8h.html#a5d4d36bdff1d1b8fe2edf092462eb2c7">COAP_PDU_DELAYED</a></div><div class="ttdeci">#define COAP_PDU_DELAYED</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00249">pdu.h:249</a></div></div>
<div class="ttc" id="apdu_8h_html_a5e932b05dd36e6becb0a689f15d07583"><div class="ttname"><a href="pdu_8h.html#a5e932b05dd36e6becb0a689f15d07583">COAP_OPTION_URI_PATH</a></div><div class="ttdeci">#define COAP_OPTION_URI_PATH</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00098">pdu.h:98</a></div></div>
<div class="ttc" id="apdu_8h_html_a63bb73e0bfcbc80e6c4ba9e3c1f8ee32"><div class="ttname"><a href="pdu_8h.html#a63bb73e0bfcbc80e6c4ba9e3c1f8ee32">COAP_SIGNALING_CSM</a></div><div class="ttdeci">#define COAP_SIGNALING_CSM</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00180">pdu.h:180</a></div></div>
<div class="ttc" id="apdu_8h_html_a651de743c1ff3168c875820cf327b1d6"><div class="ttname"><a href="pdu_8h.html#a651de743c1ff3168c875820cf327b1d6">COAP_RESPONSE_CODE</a></div><div class="ttdeci">#define COAP_RESPONSE_CODE(N)</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00132">pdu.h:132</a></div></div>
<div class="ttc" id="apdu_8h_html_a6750e42d35ffae3be6a65f6fbd095a6a"><div class="ttname"><a href="pdu_8h.html#a6750e42d35ffae3be6a65f6fbd095a6a">COAP_REQUEST_DELETE</a></div><div class="ttdeci">#define COAP_REQUEST_DELETE</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00082">pdu.h:82</a></div></div>
<div class="ttc" id="apdu_8h_html_a69a63fe3b38001521e87a71b2011750b"><div class="ttname"><a href="pdu_8h.html#a69a63fe3b38001521e87a71b2011750b">COAP_RESPONSE_CLASS</a></div><div class="ttdeci">#define COAP_RESPONSE_CLASS(C)</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00135">pdu.h:135</a></div></div>
<div class="ttc" id="apdu_8h_html_a6c9a1dd7b311e5a420e3a7c36b918a02"><div class="ttname"><a href="pdu_8h.html#a6c9a1dd7b311e5a420e3a7c36b918a02">COAP_PROTO_TLS</a></div><div class="ttdeci">#define COAP_PROTO_TLS</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00345">pdu.h:345</a></div></div>
<div class="ttc" id="apdu_8h_html_a7736ba4d5c9603785584582e1b4c9f94"><div class="ttname"><a href="pdu_8h.html#a7736ba4d5c9603785584582e1b4c9f94">COAP_PDU_IS_EMPTY</a></div><div class="ttdeci">#define COAP_PDU_IS_EMPTY(pdu)</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00310">pdu.h:310</a></div></div>
<div class="ttc" id="apdu_8h_html_a8046a72f69381eb21e87ece231506137"><div class="ttname"><a href="pdu_8h.html#a8046a72f69381eb21e87ece231506137">COAP_PDU_IS_SIGNALING</a></div><div class="ttdeci">#define COAP_PDU_IS_SIGNALING(pdu)</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00313">pdu.h:313</a></div></div>
<div class="ttc" id="apdu_8h_html_a8ccd8621181b13b832efed665539dd62"><div class="ttname"><a href="pdu_8h.html#a8ccd8621181b13b832efed665539dd62">COAP_SIGNALING_OPTION_BLOCK_WISE_TRANSFER</a></div><div class="ttdeci">#define COAP_SIGNALING_OPTION_BLOCK_WISE_TRANSFER</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00188">pdu.h:188</a></div></div>
<div class="ttc" id="apdu_8h_html_a8d16c2a7f279b2b6517b38d58347dead"><div class="ttname"><a href="pdu_8h.html#a8d16c2a7f279b2b6517b38d58347dead">COAP_MESSAGE_NON</a></div><div class="ttdeci">#define COAP_MESSAGE_NON</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00073">pdu.h:73</a></div></div>
<div class="ttc" id="apdu_8h_html_a99007567c62f8f31404111b7bb888c6e"><div class="ttname"><a href="pdu_8h.html#a99007567c62f8f31404111b7bb888c6e">COAP_OPTION_CONTENT_TYPE</a></div><div class="ttdeci">#define COAP_OPTION_CONTENT_TYPE</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00100">pdu.h:100</a></div></div>
<div class="ttc" id="apdu_8h_html_a9ca373ecc6b3ea33fa62791ce3d58c9a"><div class="ttname"><a href="pdu_8h.html#a9ca373ecc6b3ea33fa62791ce3d58c9a">COAP_MESSAGE_RST</a></div><div class="ttdeci">#define COAP_MESSAGE_RST</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00075">pdu.h:75</a></div></div>
<div class="ttc" id="apdu_8h_html_ab1709ea7c61e18152310b537e09b6fee"><div class="ttname"><a href="pdu_8h.html#ab1709ea7c61e18152310b537e09b6fee">COAP_SIGNALING_OPTION_CUSTODY</a></div><div class="ttdeci">#define COAP_SIGNALING_OPTION_CUSTODY</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00190">pdu.h:190</a></div></div>
<div class="ttc" id="apdu_8h_html_ab2a2b75edf2611bc01464bb182e4d781"><div class="ttname"><a href="pdu_8h.html#ab2a2b75edf2611bc01464bb182e4d781">COAP_MESSAGE_ACK</a></div><div class="ttdeci">#define COAP_MESSAGE_ACK</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00074">pdu.h:74</a></div></div>
<div class="ttc" id="apdu_8h_html_ab6ad49de4b14e7cf5bd0a2a1a87eef2f"><div class="ttname"><a href="pdu_8h.html#ab6ad49de4b14e7cf5bd0a2a1a87eef2f">COAP_MESSAGE_CON</a></div><div class="ttdeci">#define COAP_MESSAGE_CON</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00072">pdu.h:72</a></div></div>
<div class="ttc" id="apdu_8h_html_ab6e43ca6d4347d1ecb3520098adfde8a"><div class="ttname"><a href="pdu_8h.html#ab6e43ca6d4347d1ecb3520098adfde8a">COAPS_DEFAULT_PORT</a></div><div class="ttdeci">#define COAPS_DEFAULT_PORT</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00029">pdu.h:29</a></div></div>
<div class="ttc" id="apdu_8h_html_ac10ea7ae66e5e549b47854417311b560"><div class="ttname"><a href="pdu_8h.html#ac10ea7ae66e5e549b47854417311b560">COAP_PROTO_DTLS</a></div><div class="ttdeci">#define COAP_PROTO_DTLS</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00343">pdu.h:343</a></div></div>
<div class="ttc" id="apdu_8h_html_ac422f368eb8783d6d704311ed95796db"><div class="ttname"><a href="pdu_8h.html#ac422f368eb8783d6d704311ed95796db">COAP_OPTION_URI_PORT</a></div><div class="ttdeci">#define COAP_OPTION_URI_PORT</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00096">pdu.h:96</a></div></div>
<div class="ttc" id="apdu_8h_html_ac60fb9284ace878df3db4a2d621d9a8d"><div class="ttname"><a href="pdu_8h.html#ac60fb9284ace878df3db4a2d621d9a8d">coap_tid_t</a></div><div class="ttdeci">int coap_tid_t</div><div class="ttdoc">coap_tid_t is used to store CoAP transaction id, i.e.</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00238">pdu.h:238</a></div></div>
<div class="ttc" id="apdu_8h_html_ac97ca96f9b7abe9f196a72aa0ab4cfb0"><div class="ttname"><a href="pdu_8h.html#ac97ca96f9b7abe9f196a72aa0ab4cfb0">COAP_OPTION_ACCEPT</a></div><div class="ttdeci">#define COAP_OPTION_ACCEPT</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00103">pdu.h:103</a></div></div>
<div class="ttc" id="apdu_8h_html_ad3712b5b4c91bdacf40ae73f7f38070a"><div class="ttname"><a href="pdu_8h.html#ad3712b5b4c91bdacf40ae73f7f38070a">COAP_SIGNALING_RELEASE</a></div><div class="ttdeci">#define COAP_SIGNALING_RELEASE</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00183">pdu.h:183</a></div></div>
<div class="ttc" id="apdu_8h_html_ad44b3aac0828f23330a1f3e7a4e4af4e"><div class="ttname"><a href="pdu_8h.html#ad44b3aac0828f23330a1f3e7a4e4af4e">COAP_REQUEST_GET</a></div><div class="ttdeci">#define COAP_REQUEST_GET</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00079">pdu.h:79</a></div></div>
<div class="ttc" id="apdu_8h_html_adaa4bc1cb4312d809ecc99c8296fcef6"><div class="ttname"><a href="pdu_8h.html#adaa4bc1cb4312d809ecc99c8296fcef6">COAP_OPTION_PROXY_URI</a></div><div class="ttdeci">#define COAP_OPTION_PROXY_URI</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00106">pdu.h:106</a></div></div>
<div class="ttc" id="apdu_8h_html_adc8e9f46192e447fc87423e412a7cee7"><div class="ttname"><a href="pdu_8h.html#adc8e9f46192e447fc87423e412a7cee7">COAP_SIGNALING_PING</a></div><div class="ttdeci">#define COAP_SIGNALING_PING</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00181">pdu.h:181</a></div></div>
<div class="ttc" id="apdu_8h_html_adf17a37fe3a833c8120d5414313c8655"><div class="ttname"><a href="pdu_8h.html#adf17a37fe3a833c8120d5414313c8655">COAP_OPTION_OBSERVE</a></div><div class="ttdeci">#define COAP_OPTION_OBSERVE</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00112">pdu.h:112</a></div></div>
<div class="ttc" id="apdu_8h_html_ae2fb86807d5c6e38795a45b5c6c4374f"><div class="ttname"><a href="pdu_8h.html#ae2fb86807d5c6e38795a45b5c6c4374f">COAP_PDU_IS_REQUEST</a></div><div class="ttdeci">#define COAP_PDU_IS_REQUEST(pdu)</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00311">pdu.h:311</a></div></div>
<div class="ttc" id="apdu_8h_html_ae988ff4a542f3add75af84433693c134"><div class="ttname"><a href="pdu_8h.html#ae988ff4a542f3add75af84433693c134">COAP_DEFAULT_URI_WELLKNOWN</a></div><div class="ttdeci">#define COAP_DEFAULT_URI_WELLKNOWN</div><div class="ttdoc">well-known resources URI</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00068">pdu.h:68</a></div></div>
<div class="ttc" id="apdu_8h_html_aeda5d0dcadd6cbb8c13e1950fcff787a"><div class="ttname"><a href="pdu_8h.html#aeda5d0dcadd6cbb8c13e1950fcff787a">COAP_PROTO_UDP</a></div><div class="ttdeci">#define COAP_PROTO_UDP</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00342">pdu.h:342</a></div></div>
<div class="ttc" id="apdu_8h_html_af39391900d8a44c795d391f60b0f3105"><div class="ttname"><a href="pdu_8h.html#af39391900d8a44c795d391f60b0f3105">COAP_MEDIATYPE_APPLICATION_LINK_FORMAT</a></div><div class="ttdeci">#define COAP_MEDIATYPE_APPLICATION_LINK_FORMAT</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00200">pdu.h:200</a></div></div>
<div class="ttc" id="apdu_8h_html_af5bbc4f5f7dc78bec5a7a9f74d88a20d"><div class="ttname"><a href="pdu_8h.html#af5bbc4f5f7dc78bec5a7a9f74d88a20d">COAP_SIGNALING_OPTION_MAX_MESSAGE_SIZE</a></div><div class="ttdeci">#define COAP_SIGNALING_OPTION_MAX_MESSAGE_SIZE</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00187">pdu.h:187</a></div></div>
<div class="ttc" id="apdu_8h_html_af6d5cf87a33203370b28929a8364cc6a"><div class="ttname"><a href="pdu_8h.html#af6d5cf87a33203370b28929a8364cc6a">COAP_SIGNALING_ABORT</a></div><div class="ttdeci">#define COAP_SIGNALING_ABORT</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00184">pdu.h:184</a></div></div>
<div class="ttc" id="apdu_8h_html_afe70beb6b87ece4aca2d2735c759c625"><div class="ttname"><a href="pdu_8h.html#afe70beb6b87ece4aca2d2735c759c625">COAP_INVALID_TID</a></div><div class="ttdeci">#define COAP_INVALID_TID</div><div class="ttdoc">Indicates an invalid transaction id.</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00241">pdu.h:241</a></div></div>
<div class="ttc" id="aresource_8c_html_a0ea23a6e5f19c9081f282e0a7cc4452d"><div class="ttname"><a href="resource_8c.html#a0ea23a6e5f19c9081f282e0a7cc4452d">coap_delete_observer</a></div><div class="ttdeci">int coap_delete_observer(coap_resource_t *resource, coap_session_t *session, const coap_binary_t *token)</div><div class="ttdoc">Removes any subscription for observer from resource and releases the allocated storage.</div><div class="ttdef"><b>Definition</b> <a href="resource_8c_source.html#l00703">resource.c:703</a></div></div>
<div class="ttc" id="aresource_8c_html_a1fae3046ad94fce85a7ea23455328958"><div class="ttname"><a href="resource_8c.html#a1fae3046ad94fce85a7ea23455328958">coap_delete_all_resources</a></div><div class="ttdeci">void coap_delete_all_resources(coap_context_t *context)</div><div class="ttdoc">Deletes all resources from given context and frees their storage.</div><div class="ttdef"><b>Definition</b> <a href="resource_8c_source.html#l00494">resource.c:494</a></div></div>
<div class="ttc" id="aresource_8c_html_a3247f7d06524ccbad44273ae9cdfecad"><div class="ttname"><a href="resource_8c.html#a3247f7d06524ccbad44273ae9cdfecad">coap_get_resource_from_uri_path</a></div><div class="ttdeci">coap_resource_t * coap_get_resource_from_uri_path(coap_context_t *context, coap_str_const_t *uri_path)</div><div class="ttdoc">Returns the resource identified by the unique string uri_path.</div><div class="ttdef"><b>Definition</b> <a href="resource_8c_source.html#l00515">resource.c:515</a></div></div>
<div class="ttc" id="aresource_8c_html_a579bcb559463d3a872831c18d8d9a1c1"><div class="ttname"><a href="resource_8c.html#a579bcb559463d3a872831c18d8d9a1c1">coap_check_notify</a></div><div class="ttdeci">void coap_check_notify(coap_context_t *context)</div><div class="ttdoc">Checks for all known resources, if they are dirty and notifies subscribed observers.</div><div class="ttdef"><b>Definition</b> <a href="resource_8c_source.html#l00869">resource.c:869</a></div></div>
<div class="ttc" id="aresource_8c_html_a6fe7101754779c34807bf00b87ee5f0b"><div class="ttname"><a href="resource_8c.html#a6fe7101754779c34807bf00b87ee5f0b">coap_handle_failed_notify</a></div><div class="ttdeci">void coap_handle_failed_notify(coap_context_t *context, coap_session_t *session, const coap_binary_t *token)</div><div class="ttdef"><b>Definition</b> <a href="resource_8c_source.html#l00930">resource.c:930</a></div></div>
<div class="ttc" id="aresource_8c_html_a82195178fe216a47a0cf8a88aa09c9cd"><div class="ttname"><a href="resource_8c.html#a82195178fe216a47a0cf8a88aa09c9cd">coap_print_wellknown</a></div><div class="ttdeci">coap_print_status_t coap_print_wellknown(coap_context_t *context, unsigned char *buf, size_t *buflen, size_t offset, coap_opt_t *query_filter)</div><div class="ttdoc">Prints the names of all known resources to buf.</div><div class="ttdef"><b>Definition</b> <a href="resource_8c_source.html#l00169">resource.c:169</a></div></div>
<div class="ttc" id="aresource_8c_html_aa04a51c7660283d48f60bf899fe5c45b"><div class="ttname"><a href="resource_8c.html#aa04a51c7660283d48f60bf899fe5c45b">coap_add_observer</a></div><div class="ttdeci">coap_subscription_t * coap_add_observer(coap_resource_t *resource, coap_session_t *session, const coap_binary_t *token, coap_string_t *query, int has_block2, coap_block_t block2)</div><div class="ttdoc">Adds the specified peer as observer for resource.</div><div class="ttdef"><b>Definition</b> <a href="resource_8c_source.html#l00623">resource.c:623</a></div></div>
<div class="ttc" id="aresource_8c_html_ad5bbd78aad763b34f4c0905fcd7b7454"><div class="ttname"><a href="resource_8c.html#ad5bbd78aad763b34f4c0905fcd7b7454">coap_touch_observer</a></div><div class="ttdeci">void coap_touch_observer(coap_context_t *context, coap_session_t *session, const coap_binary_t *token)</div><div class="ttdoc">Marks an observer as alive.</div><div class="ttdef"><b>Definition</b> <a href="resource_8c_source.html#l00690">resource.c:690</a></div></div>
<div class="ttc" id="aresource_8h_html"><div class="ttname"><a href="resource_8h.html">resource.h</a></div><div class="ttdoc">Generic resource handling.</div></div>
<div class="ttc" id="aresource_8h_html_a0e546da5428d06e7bd64308f3e0434af"><div class="ttname"><a href="resource_8h.html#a0e546da5428d06e7bd64308f3e0434af">coap_method_handler_t</a></div><div class="ttdeci">void(* coap_method_handler_t)(coap_context_t *, struct coap_resource_t *, coap_session_t *, coap_pdu_t *, coap_binary_t *, coap_string_t *, coap_pdu_t *)</div><div class="ttdoc">Definition of message handler function (.</div><div class="ttdef"><b>Definition</b> <a href="resource_8h_source.html#l00035">resource.h:36</a></div></div>
<div class="ttc" id="aresource_8h_html_a8d07061a1bb4a55b64c517b5a0a02914"><div class="ttname"><a href="resource_8h.html#a8d07061a1bb4a55b64c517b5a0a02914">COAP_RESOURCE_CHECK_TIME</a></div><div class="ttdeci">#define COAP_RESOURCE_CHECK_TIME</div><div class="ttdoc">The interval in seconds to check if resources have changed.</div><div class="ttdef"><b>Definition</b> <a href="resource_8h_source.html#l00022">resource.h:22</a></div></div>
<div class="ttc" id="aresource_8h_html_abba955fb8180d86085c2f0680626cfe8"><div class="ttname"><a href="resource_8h.html#abba955fb8180d86085c2f0680626cfe8">COAP_PRINT_STATUS_ERROR</a></div><div class="ttdeci">#define COAP_PRINT_STATUS_ERROR</div><div class="ttdef"><b>Definition</b> <a href="resource_8h_source.html#l00315">resource.h:315</a></div></div>
<div class="ttc" id="aresource_8h_html_afbf6d1376ab4eec0d503f47281877f4c"><div class="ttname"><a href="resource_8h.html#afbf6d1376ab4eec0d503f47281877f4c">RESOURCES_ITER</a></div><div class="ttdeci">#define RESOURCES_ITER(r, tmp)</div><div class="ttdef"><b>Definition</b> <a href="resource_8h_source.html#l00455">resource.h:455</a></div></div>
<div class="ttc" id="astr_8h_html"><div class="ttname"><a href="str_8h.html">str.h</a></div></div>
<div class="ttc" id="astructcoap__address__t_html"><div class="ttname"><a href="structcoap__address__t.html">coap_address_t</a></div><div class="ttdoc">multi-purpose address abstraction</div><div class="ttdef"><b>Definition</b> <a href="address_8h_source.html#l00062">address.h:62</a></div></div>
<div class="ttc" id="astructcoap__binary__t_html"><div class="ttname"><a href="structcoap__binary__t.html">coap_binary_t</a></div><div class="ttdoc">Coap binary data definition.</div><div class="ttdef"><b>Definition</b> <a href="str_8h_source.html#l00043">str.h:43</a></div></div>
<div class="ttc" id="astructcoap__binary__t_html_a259ade386451359049875d1d90447963"><div class="ttname"><a href="structcoap__binary__t.html#a259ade386451359049875d1d90447963">coap_binary_t::length</a></div><div class="ttdeci">size_t length</div><div class="ttdoc">length of binary data</div><div class="ttdef"><b>Definition</b> <a href="str_8h_source.html#l00044">str.h:44</a></div></div>
<div class="ttc" id="astructcoap__binary__t_html_a728a24b7e7a462954cdd7a1790c35a8e"><div class="ttname"><a href="structcoap__binary__t.html#a728a24b7e7a462954cdd7a1790c35a8e">coap_binary_t::s</a></div><div class="ttdeci">uint8_t * s</div><div class="ttdoc">binary data</div><div class="ttdef"><b>Definition</b> <a href="str_8h_source.html#l00045">str.h:45</a></div></div>
<div class="ttc" id="astructcoap__block__t_html"><div class="ttname"><a href="structcoap__block__t.html">coap_block_t</a></div><div class="ttdoc">Structure of Block options.</div><div class="ttdef"><b>Definition</b> <a href="block_8h_source.html#l00036">block.h:36</a></div></div>
<div class="ttc" id="astructcoap__block__t_html_a601d49b58bb18aa216e7bc5410076af9"><div class="ttname"><a href="structcoap__block__t.html#a601d49b58bb18aa216e7bc5410076af9">coap_block_t::num</a></div><div class="ttdeci">unsigned int num</div><div class="ttdoc">block number</div><div class="ttdef"><b>Definition</b> <a href="block_8h_source.html#l00037">block.h:37</a></div></div>
<div class="ttc" id="astructcoap__block__t_html_aaeb4409b7a94cc0de61ea7657996d329"><div class="ttname"><a href="structcoap__block__t.html#aaeb4409b7a94cc0de61ea7657996d329">coap_block_t::szx</a></div><div class="ttdeci">unsigned int szx</div><div class="ttdoc">block size</div><div class="ttdef"><b>Definition</b> <a href="block_8h_source.html#l00039">block.h:39</a></div></div>
<div class="ttc" id="astructcoap__block__t_html_ab853b0f192d874e5c0fc5d054348731d"><div class="ttname"><a href="structcoap__block__t.html#ab853b0f192d874e5c0fc5d054348731d">coap_block_t::m</a></div><div class="ttdeci">unsigned int m</div><div class="ttdoc">1 if more blocks follow, 0 otherwise</div><div class="ttdef"><b>Definition</b> <a href="block_8h_source.html#l00038">block.h:38</a></div></div>
<div class="ttc" id="astructcoap__context__t_html"><div class="ttname"><a href="structcoap__context__t.html">coap_context_t</a></div><div class="ttdoc">The CoAP stack's global state is stored in a coap_context_t object.</div><div class="ttdef"><b>Definition</b> <a href="net_8h_source.html#l00148">net.h:148</a></div></div>
<div class="ttc" id="astructcoap__context__t_html_a080dc026c9eec48849d0140b433e04bb"><div class="ttname"><a href="structcoap__context__t.html#a080dc026c9eec48849d0140b433e04bb">coap_context_t::sendqueue_basetime</a></div><div class="ttdeci">coap_tick_t sendqueue_basetime</div><div class="ttdoc">The time stamp in the first element of the sendqeue is relative to sendqueue_basetime.</div><div class="ttdef"><b>Definition</b> <a href="net_8h_source.html#l00164">net.h:164</a></div></div>
<div class="ttc" id="astructcoap__context__t_html_a094b3eaad04393ebf8527f6f6b58112e"><div class="ttname"><a href="structcoap__context__t.html#a094b3eaad04393ebf8527f6f6b58112e">coap_context_t::pong_handler</a></div><div class="ttdeci">coap_pong_handler_t pong_handler</div><div class="ttdef"><b>Definition</b> <a href="net_8h_source.html#l00191">net.h:191</a></div></div>
<div class="ttc" id="astructcoap__context__t_html_a0f715479db8671158a800ac14ef3ada3"><div class="ttname"><a href="structcoap__context__t.html#a0f715479db8671158a800ac14ef3ada3">coap_context_t::psk_hint_len</a></div><div class="ttdeci">size_t psk_hint_len</div><div class="ttdef"><b>Definition</b> <a href="net_8h_source.html#l00209">net.h:209</a></div></div>
<div class="ttc" id="astructcoap__context__t_html_a1ad04b95f7ee48fa3575f142a81c3b99"><div class="ttname"><a href="structcoap__context__t.html#a1ad04b95f7ee48fa3575f142a81c3b99">coap_context_t::network_read</a></div><div class="ttdeci">ssize_t(* network_read)(coap_socket_t *sock, struct coap_packet_t *packet)</div><div class="ttdef"><b>Definition</b> <a href="net_8h_source.html#l00201">net.h:201</a></div></div>
<div class="ttc" id="astructcoap__context__t_html_a2dafa5220ce428f5788c5d08adde4838"><div class="ttname"><a href="structcoap__context__t.html#a2dafa5220ce428f5788c5d08adde4838">coap_context_t::csm_timeout</a></div><div class="ttdeci">unsigned int csm_timeout</div><div class="ttdoc">Timeout for waiting for a CSM from the remote side.</div><div class="ttdef"><b>Definition</b> <a href="net_8h_source.html#l00217">net.h:217</a></div></div>
<div class="ttc" id="astructcoap__context__t_html_a2e8ee7fcc1a46e74ea80484a7025a9c3"><div class="ttname"><a href="structcoap__context__t.html#a2e8ee7fcc1a46e74ea80484a7025a9c3">coap_context_t::app</a></div><div class="ttdeci">void * app</div><div class="ttdoc">application-specific data</div><div class="ttdef"><b>Definition</b> <a href="net_8h_source.html#l00219">net.h:219</a></div></div>
<div class="ttc" id="astructcoap__context__t_html_a3a85c3d3e14611f74907b47b20a83b6e"><div class="ttname"><a href="structcoap__context__t.html#a3a85c3d3e14611f74907b47b20a83b6e">coap_context_t::unknown_resource</a></div><div class="ttdeci">struct coap_resource_t * unknown_resource</div><div class="ttdoc">can be used for handling unknown resources</div><div class="ttdef"><b>Definition</b> <a href="net_8h_source.html#l00152">net.h:152</a></div></div>
<div class="ttc" id="astructcoap__context__t_html_a5984a41d68fae2a68703f6afd940671f"><div class="ttname"><a href="structcoap__context__t.html#a5984a41d68fae2a68703f6afd940671f">coap_context_t::sessions</a></div><div class="ttdeci">coap_session_t * sessions</div><div class="ttdoc">client sessions</div><div class="ttdef"><b>Definition</b> <a href="net_8h_source.html#l00167">net.h:167</a></div></div>
<div class="ttc" id="astructcoap__context__t_html_a610b7410b2c13c8908590d671243f125"><div class="ttname"><a href="structcoap__context__t.html#a610b7410b2c13c8908590d671243f125">coap_context_t::nack_handler</a></div><div class="ttdeci">coap_nack_handler_t nack_handler</div><div class="ttdef"><b>Definition</b> <a href="net_8h_source.html#l00189">net.h:189</a></div></div>
<div class="ttc" id="astructcoap__context__t_html_a653c88c399ffa1dc3661ffdb9daabc2a"><div class="ttname"><a href="structcoap__context__t.html#a653c88c399ffa1dc3661ffdb9daabc2a">coap_context_t::ping_timeout</a></div><div class="ttdeci">unsigned int ping_timeout</div><div class="ttdoc">Minimum inactivity time before sending a ping message.</div><div class="ttdef"><b>Definition</b> <a href="net_8h_source.html#l00216">net.h:216</a></div></div>
<div class="ttc" id="astructcoap__context__t_html_a71aa494865b061f72ec0ecd633aa4e7f"><div class="ttname"><a href="structcoap__context__t.html#a71aa494865b061f72ec0ecd633aa4e7f">coap_context_t::get_server_psk</a></div><div class="ttdeci">size_t(* get_server_psk)(const coap_session_t *session, const uint8_t *identity, size_t identity_len, uint8_t *psk, size_t max_psk_len)</div><div class="ttdef"><b>Definition</b> <a href="net_8h_source.html#l00204">net.h:204</a></div></div>
<div class="ttc" id="astructcoap__context__t_html_a75eedd9da9c35fbbffce222fac0d6f1a"><div class="ttname"><a href="structcoap__context__t.html#a75eedd9da9c35fbbffce222fac0d6f1a">coap_context_t::network_send</a></div><div class="ttdeci">ssize_t(* network_send)(coap_socket_t *sock, const coap_session_t *session, const uint8_t *data, size_t datalen)</div><div class="ttdef"><b>Definition</b> <a href="net_8h_source.html#l00199">net.h:199</a></div></div>
<div class="ttc" id="astructcoap__context__t_html_a85e2737b90beb8afce13a6ef2bea87f4"><div class="ttname"><a href="structcoap__context__t.html#a85e2737b90beb8afce13a6ef2bea87f4">coap_context_t::dtls_context</a></div><div class="ttdeci">void * dtls_context</div><div class="ttdef"><b>Definition</b> <a href="net_8h_source.html#l00207">net.h:207</a></div></div>
<div class="ttc" id="astructcoap__context__t_html_a907e852e962a4ecafc3706c6b0d2e2d2"><div class="ttname"><a href="structcoap__context__t.html#a907e852e962a4ecafc3706c6b0d2e2d2">coap_context_t::known_options</a></div><div class="ttdeci">coap_opt_filter_t known_options</div><div class="ttdef"><b>Definition</b> <a href="net_8h_source.html#l00149">net.h:149</a></div></div>
<div class="ttc" id="astructcoap__context__t_html_a92b6634824600447d806e34e9cf58f9e"><div class="ttname"><a href="structcoap__context__t.html#a92b6634824600447d806e34e9cf58f9e">coap_context_t::ping_handler</a></div><div class="ttdeci">coap_ping_handler_t ping_handler</div><div class="ttdef"><b>Definition</b> <a href="net_8h_source.html#l00190">net.h:190</a></div></div>
<div class="ttc" id="astructcoap__context__t_html_aa1e842d6431edb653dcfb117c237657f"><div class="ttname"><a href="structcoap__context__t.html#aa1e842d6431edb653dcfb117c237657f">coap_context_t::sendqueue</a></div><div class="ttdeci">coap_queue_t * sendqueue</div><div class="ttdef"><b>Definition</b> <a href="net_8h_source.html#l00165">net.h:165</a></div></div>
<div class="ttc" id="astructcoap__context__t_html_aa6aba2771228fc473f42ed37c73948e4"><div class="ttname"><a href="structcoap__context__t.html#aa6aba2771228fc473f42ed37c73948e4">coap_context_t::message_id</a></div><div class="ttdeci">uint16_t message_id</div><div class="ttdoc">The last message id that was used is stored in this field.</div><div class="ttdef"><b>Definition</b> <a href="net_8h_source.html#l00186">net.h:186</a></div></div>
<div class="ttc" id="astructcoap__context__t_html_aaeae5156b5641ce3a0bb6d13f5c226d2"><div class="ttname"><a href="structcoap__context__t.html#aaeae5156b5641ce3a0bb6d13f5c226d2">coap_context_t::response_handler</a></div><div class="ttdeci">coap_response_handler_t response_handler</div><div class="ttdef"><b>Definition</b> <a href="net_8h_source.html#l00188">net.h:188</a></div></div>
<div class="ttc" id="astructcoap__context__t_html_aaf441070f9b1f2aea225fc61b60a6bb8"><div class="ttname"><a href="structcoap__context__t.html#aaf441070f9b1f2aea225fc61b60a6bb8">coap_context_t::resources</a></div><div class="ttdeci">struct coap_resource_t * resources</div><div class="ttdoc">hash table or list of known resources</div><div class="ttdef"><b>Definition</b> <a href="net_8h_source.html#l00150">net.h:150</a></div></div>
<div class="ttc" id="astructcoap__context__t_html_ab12d8e6ea4ec3ec2f196bd088d280f81"><div class="ttname"><a href="structcoap__context__t.html#ab12d8e6ea4ec3ec2f196bd088d280f81">coap_context_t::psk_key</a></div><div class="ttdeci">uint8_t * psk_key</div><div class="ttdef"><b>Definition</b> <a href="net_8h_source.html#l00210">net.h:210</a></div></div>
<div class="ttc" id="astructcoap__context__t_html_ab7d5935f4a3e1c94fa6bb12bf6400006"><div class="ttname"><a href="structcoap__context__t.html#ab7d5935f4a3e1c94fa6bb12bf6400006">coap_context_t::endpoint</a></div><div class="ttdeci">coap_endpoint_t * endpoint</div><div class="ttdoc">the endpoints used for listening</div><div class="ttdef"><b>Definition</b> <a href="net_8h_source.html#l00166">net.h:166</a></div></div>
<div class="ttc" id="astructcoap__context__t_html_aca05833745124e6987489c8ecfebcb63"><div class="ttname"><a href="structcoap__context__t.html#aca05833745124e6987489c8ecfebcb63">coap_context_t::get_server_hint</a></div><div class="ttdeci">size_t(* get_server_hint)(const coap_session_t *session, uint8_t *hint, size_t max_hint_len)</div><div class="ttdef"><b>Definition</b> <a href="net_8h_source.html#l00205">net.h:205</a></div></div>
<div class="ttc" id="astructcoap__context__t_html_acaa625e1c87b88a1dc48bd0d895185d9"><div class="ttname"><a href="structcoap__context__t.html#acaa625e1c87b88a1dc48bd0d895185d9">coap_context_t::handle_event</a></div><div class="ttdeci">coap_event_handler_t handle_event</div><div class="ttdoc">Callback function that is used to signal events to the application.</div><div class="ttdef"><b>Definition</b> <a href="net_8h_source.html#l00197">net.h:197</a></div></div>
<div class="ttc" id="astructcoap__context__t_html_ad724d5cbe61f367fc10162668c31c0a8"><div class="ttname"><a href="structcoap__context__t.html#ad724d5cbe61f367fc10162668c31c0a8">coap_context_t::psk_hint</a></div><div class="ttdeci">uint8_t * psk_hint</div><div class="ttdef"><b>Definition</b> <a href="net_8h_source.html#l00208">net.h:208</a></div></div>
<div class="ttc" id="astructcoap__context__t_html_ae412c9932b9ced3c778d6029d21493c7"><div class="ttname"><a href="structcoap__context__t.html#ae412c9932b9ced3c778d6029d21493c7">coap_context_t::get_client_psk</a></div><div class="ttdeci">size_t(* get_client_psk)(const coap_session_t *session, const uint8_t *hint, size_t hint_len, uint8_t *identity, size_t *identity_len, size_t max_identity_len, uint8_t *psk, size_t max_psk_len)</div><div class="ttdef"><b>Definition</b> <a href="net_8h_source.html#l00203">net.h:203</a></div></div>
<div class="ttc" id="astructcoap__context__t_html_af2e8cc51d43707399bf19226afca7cd4"><div class="ttname"><a href="structcoap__context__t.html#af2e8cc51d43707399bf19226afca7cd4">coap_context_t::psk_key_len</a></div><div class="ttdeci">size_t psk_key_len</div><div class="ttdef"><b>Definition</b> <a href="net_8h_source.html#l00211">net.h:211</a></div></div>
<div class="ttc" id="astructcoap__dtls__pki__t_html"><div class="ttname"><a href="structcoap__dtls__pki__t.html">coap_dtls_pki_t</a></div><div class="ttdoc">The structure used for defining the PKI setup data to be used.</div><div class="ttdef"><b>Definition</b> <a href="coap__dtls_8h_source.html#l00191">coap_dtls.h:191</a></div></div>
<div class="ttc" id="astructcoap__dtls__pki__t_html_a6311e9978d304e0aff143ebffe424ea4"><div class="ttname"><a href="structcoap__dtls__pki__t.html#a6311e9978d304e0aff143ebffe424ea4">coap_dtls_pki_t::version</a></div><div class="ttdeci">uint8_t version</div><div class="ttdef"><b>Definition</b> <a href="coap__dtls_8h_source.html#l00192">coap_dtls.h:192</a></div></div>
<div class="ttc" id="astructcoap__endpoint__t_html"><div class="ttname"><a href="structcoap__endpoint__t.html">coap_endpoint_t</a></div><div class="ttdoc">Abstraction of virtual endpoint that can be attached to coap_context_t.</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00301">coap_session.h:301</a></div></div>
<div class="ttc" id="astructcoap__endpoint__t_html_a6032778926bccf2e0c4f093eff03bb51"><div class="ttname"><a href="structcoap__endpoint__t.html#a6032778926bccf2e0c4f093eff03bb51">coap_endpoint_t::sessions</a></div><div class="ttdeci">coap_session_t * sessions</div><div class="ttdoc">list of active sessions</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00308">coap_session.h:308</a></div></div>
<div class="ttc" id="astructcoap__endpoint__t_html_ab7ae1b1eaada32ecebf9333945fbe4e0"><div class="ttname"><a href="structcoap__endpoint__t.html#ab7ae1b1eaada32ecebf9333945fbe4e0">coap_endpoint_t::bind_addr</a></div><div class="ttdeci">coap_address_t bind_addr</div><div class="ttdoc">local interface address</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00307">coap_session.h:307</a></div></div>
<div class="ttc" id="astructcoap__endpoint__t_html_ad0d9d4c7a4ff91f4e5149ea82cc02a38"><div class="ttname"><a href="structcoap__endpoint__t.html#ad0d9d4c7a4ff91f4e5149ea82cc02a38">coap_endpoint_t::sock</a></div><div class="ttdeci">coap_socket_t sock</div><div class="ttdoc">socket object for the interface, if any</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00306">coap_session.h:306</a></div></div>
<div class="ttc" id="astructcoap__endpoint__t_html_ad5a48a373d77ee179f28ebba6e064b55"><div class="ttname"><a href="structcoap__endpoint__t.html#ad5a48a373d77ee179f28ebba6e064b55">coap_endpoint_t::proto</a></div><div class="ttdeci">coap_proto_t proto</div><div class="ttdoc">protocol used on this interface</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00304">coap_session.h:304</a></div></div>
<div class="ttc" id="astructcoap__opt__iterator__t_html"><div class="ttname"><a href="structcoap__opt__iterator__t.html">coap_opt_iterator_t</a></div><div class="ttdoc">Iterator to run through PDU options.</div><div class="ttdef"><b>Definition</b> <a href="option_8h_source.html#l00237">option.h:237</a></div></div>
<div class="ttc" id="astructcoap__opt__iterator__t_html_a0df30f4a2bb85deb3d493fded6967b9d"><div class="ttname"><a href="structcoap__opt__iterator__t.html#a0df30f4a2bb85deb3d493fded6967b9d">coap_opt_iterator_t::type</a></div><div class="ttdeci">uint16_t type</div><div class="ttdoc">decoded option type</div><div class="ttdef"><b>Definition</b> <a href="option_8h_source.html#l00239">option.h:239</a></div></div>
<div class="ttc" id="astructcoap__packet__t_html"><div class="ttname"><a href="structcoap__packet__t.html">coap_packet_t</a></div><div class="ttdef"><b>Definition</b> <a href="coap__io_8h_source.html#l00196">coap_io.h:196</a></div></div>
<div class="ttc" id="astructcoap__packet__t_html_a51d58ff5bf1ffd31afc66fc6de6c0b87"><div class="ttname"><a href="structcoap__packet__t.html#a51d58ff5bf1ffd31afc66fc6de6c0b87">coap_packet_t::src</a></div><div class="ttdeci">coap_address_t src</div><div class="ttdoc">the packet's source address</div><div class="ttdef"><b>Definition</b> <a href="coap__io_8h_source.html#l00197">coap_io.h:197</a></div></div>
<div class="ttc" id="astructcoap__packet__t_html_a8f29a6a1277ca984070c79a570fedf5d"><div class="ttname"><a href="structcoap__packet__t.html#a8f29a6a1277ca984070c79a570fedf5d">coap_packet_t::payload</a></div><div class="ttdeci">unsigned char payload[COAP_RXBUFFER_SIZE]</div><div class="ttdoc">payload</div><div class="ttdef"><b>Definition</b> <a href="coap__io_8h_source.html#l00201">coap_io.h:201</a></div></div>
<div class="ttc" id="astructcoap__packet__t_html_ad6b22cabb2e5f89e03b6c78926ad7de4"><div class="ttname"><a href="structcoap__packet__t.html#ad6b22cabb2e5f89e03b6c78926ad7de4">coap_packet_t::dst</a></div><div class="ttdeci">coap_address_t dst</div><div class="ttdoc">the packet's destination address</div><div class="ttdef"><b>Definition</b> <a href="coap__io_8h_source.html#l00198">coap_io.h:198</a></div></div>
<div class="ttc" id="astructcoap__pdu__t_html"><div class="ttname"><a href="structcoap__pdu__t.html">coap_pdu_t</a></div><div class="ttdoc">structure for CoAP PDUs token, if any, follows the fixed size header, then options until payload mark...</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00285">pdu.h:285</a></div></div>
<div class="ttc" id="astructcoap__pdu__t_html_a0d5796b82924c69852860053020d0684"><div class="ttname"><a href="structcoap__pdu__t.html#a0d5796b82924c69852860053020d0684">coap_pdu_t::type</a></div><div class="ttdeci">uint8_t type</div><div class="ttdoc">message type</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00286">pdu.h:286</a></div></div>
<div class="ttc" id="astructcoap__pdu__t_html_a3c42c790abb815d722fbebcd7702a200"><div class="ttname"><a href="structcoap__pdu__t.html#a3c42c790abb815d722fbebcd7702a200">coap_pdu_t::token</a></div><div class="ttdeci">uint8_t * token</div><div class="ttdoc">first byte of token, if any, or options</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00296">pdu.h:296</a></div></div>
<div class="ttc" id="astructcoap__pdu__t_html_a5bd82194d62c90d9243313cbbbe26d47"><div class="ttname"><a href="structcoap__pdu__t.html#a5bd82194d62c90d9243313cbbbe26d47">coap_pdu_t::max_size</a></div><div class="ttdeci">size_t max_size</div><div class="ttdoc">maximum size for token, options and payload, or zero for variable size pdu</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00295">pdu.h:295</a></div></div>
<div class="ttc" id="astructcoap__pdu__t_html_a65877a685b1f3428d3dc872af075ddc1"><div class="ttname"><a href="structcoap__pdu__t.html#a65877a685b1f3428d3dc872af075ddc1">coap_pdu_t::tid</a></div><div class="ttdeci">uint16_t tid</div><div class="ttdoc">transaction id, if any, in regular host byte order</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00291">pdu.h:291</a></div></div>
<div class="ttc" id="astructcoap__pdu__t_html_a69c774f85355eeacc4742355527a8097"><div class="ttname"><a href="structcoap__pdu__t.html#a69c774f85355eeacc4742355527a8097">coap_pdu_t::code</a></div><div class="ttdeci">uint8_t code</div><div class="ttdoc">request method (value 1–10) or response code (value 40-255)</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00287">pdu.h:287</a></div></div>
<div class="ttc" id="astructcoap__pdu__t_html_a8c05f6d455ff81d7751ddb61233a455b"><div class="ttname"><a href="structcoap__pdu__t.html#a8c05f6d455ff81d7751ddb61233a455b">coap_pdu_t::token_length</a></div><div class="ttdeci">uint8_t token_length</div><div class="ttdoc">length of Token</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00290">pdu.h:290</a></div></div>
<div class="ttc" id="astructcoap__pdu__t_html_a8e9b3dc1dc376c0d98a5e6940953cdc2"><div class="ttname"><a href="structcoap__pdu__t.html#a8e9b3dc1dc376c0d98a5e6940953cdc2">coap_pdu_t::hdr_size</a></div><div class="ttdeci">uint8_t hdr_size</div><div class="ttdoc">actaul size used for protocol-specific header</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00289">pdu.h:289</a></div></div>
<div class="ttc" id="astructcoap__pdu__t_html_ac5018459a3078a5b896119d7464cb273"><div class="ttname"><a href="structcoap__pdu__t.html#ac5018459a3078a5b896119d7464cb273">coap_pdu_t::used_size</a></div><div class="ttdeci">size_t used_size</div><div class="ttdoc">used bytes of storage for token, options and payload</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00294">pdu.h:294</a></div></div>
<div class="ttc" id="astructcoap__pdu__t_html_ad526a13d4c00b670d67f557245c2236c"><div class="ttname"><a href="structcoap__pdu__t.html#ad526a13d4c00b670d67f557245c2236c">coap_pdu_t::alloc_size</a></div><div class="ttdeci">size_t alloc_size</div><div class="ttdoc">allocated storage for token, options and payload</div><div class="ttdef"><b>Definition</b> <a href="pdu_8h_source.html#l00293">pdu.h:293</a></div></div>
<div class="ttc" id="astructcoap__queue__t_html"><div class="ttname"><a href="structcoap__queue__t.html">coap_queue_t</a></div><div class="ttdoc">Queue entry.</div><div class="ttdef"><b>Definition</b> <a href="net_8h_source.html#l00039">net.h:39</a></div></div>
<div class="ttc" id="astructcoap__queue__t_html_a20ff974763849b7aeaca2cbf6f4b8f70"><div class="ttname"><a href="structcoap__queue__t.html#a20ff974763849b7aeaca2cbf6f4b8f70">coap_queue_t::session</a></div><div class="ttdeci">coap_session_t * session</div><div class="ttdoc">the CoAP session</div><div class="ttdef"><b>Definition</b> <a href="net_8h_source.html#l00045">net.h:45</a></div></div>
<div class="ttc" id="astructcoap__queue__t_html_a2bc9a6e3ed0442653e53b92f5fa92954"><div class="ttname"><a href="structcoap__queue__t.html#a2bc9a6e3ed0442653e53b92f5fa92954">coap_queue_t::pdu</a></div><div class="ttdeci">coap_pdu_t * pdu</div><div class="ttdoc">the CoAP PDU to send</div><div class="ttdef"><b>Definition</b> <a href="net_8h_source.html#l00047">net.h:47</a></div></div>
<div class="ttc" id="astructcoap__queue__t_html_a4d8b47a02fea39b9a9fc0501f81cbaa2"><div class="ttname"><a href="structcoap__queue__t.html#a4d8b47a02fea39b9a9fc0501f81cbaa2">coap_queue_t::timeout</a></div><div class="ttdeci">unsigned int timeout</div><div class="ttdoc">the randomized timeout value</div><div class="ttdef"><b>Definition</b> <a href="net_8h_source.html#l00044">net.h:44</a></div></div>
<div class="ttc" id="astructcoap__queue__t_html_a75428f649543d0779fce28c8538247d6"><div class="ttname"><a href="structcoap__queue__t.html#a75428f649543d0779fce28c8538247d6">coap_queue_t::next</a></div><div class="ttdeci">struct coap_queue_t * next</div><div class="ttdef"><b>Definition</b> <a href="net_8h_source.html#l00040">net.h:40</a></div></div>
<div class="ttc" id="astructcoap__queue__t_html_ab5edd7b3b3ddd98d8356febbd4726e7c"><div class="ttname"><a href="structcoap__queue__t.html#ab5edd7b3b3ddd98d8356febbd4726e7c">coap_queue_t::t</a></div><div class="ttdeci">coap_tick_t t</div><div class="ttdoc">when to send PDU for the next time</div><div class="ttdef"><b>Definition</b> <a href="net_8h_source.html#l00041">net.h:41</a></div></div>
<div class="ttc" id="astructcoap__queue__t_html_aeded9dd536f54ee47418575711e7dbac"><div class="ttname"><a href="structcoap__queue__t.html#aeded9dd536f54ee47418575711e7dbac">coap_queue_t::id</a></div><div class="ttdeci">coap_tid_t id</div><div class="ttdoc">CoAP transaction id.</div><div class="ttdef"><b>Definition</b> <a href="net_8h_source.html#l00046">net.h:46</a></div></div>
<div class="ttc" id="astructcoap__queue__t_html_aff24f5a43b3d2182535bc7bd2b5f5341"><div class="ttname"><a href="structcoap__queue__t.html#aff24f5a43b3d2182535bc7bd2b5f5341">coap_queue_t::retransmit_cnt</a></div><div class="ttdeci">unsigned char retransmit_cnt</div><div class="ttdoc">retransmission counter, will be removed when zero</div><div class="ttdef"><b>Definition</b> <a href="net_8h_source.html#l00042">net.h:42</a></div></div>
<div class="ttc" id="astructcoap__resource__t_html"><div class="ttname"><a href="structcoap__resource__t.html">coap_resource_t</a></div><div class="ttdef"><b>Definition</b> <a href="resource_8h_source.html#l00069">resource.h:69</a></div></div>
<div class="ttc" id="astructcoap__resource__t_html_a38e9f66631ebf849e1742867273e8b1a"><div class="ttname"><a href="structcoap__resource__t.html#a38e9f66631ebf849e1742867273e8b1a">coap_resource_t::uri_path</a></div><div class="ttdeci">coap_str_const_t * uri_path</div><div class="ttdoc">Request URI Path for this resource.</div><div class="ttdef"><b>Definition</b> <a href="resource_8h_source.html#l00096">resource.h:96</a></div></div>
<div class="ttc" id="astructcoap__resource__t_html_a64e782257dd1931d6082bff001ecf9c9"><div class="ttname"><a href="structcoap__resource__t.html#a64e782257dd1931d6082bff001ecf9c9">coap_resource_t::handler</a></div><div class="ttdeci">coap_method_handler_t handler[7]</div><div class="ttdoc">Used to store handlers for the seven coap methods GET, POST, PUT, DELETE, FETCH, PATCH and IPATCH.</div><div class="ttdef"><b>Definition</b> <a href="resource_8h_source.html#l00084">resource.h:84</a></div></div>
<div class="ttc" id="astructcoap__resource__t_html_a7b659252268ebdab8636e98fd5951f01"><div class="ttname"><a href="structcoap__resource__t.html#a7b659252268ebdab8636e98fd5951f01">coap_resource_t::is_unknown</a></div><div class="ttdeci">unsigned int is_unknown</div><div class="ttdoc">resource created for unknown handler</div><div class="ttdef"><b>Definition</b> <a href="resource_8h_source.html#l00075">resource.h:75</a></div></div>
<div class="ttc" id="astructcoap__resource__t_html_ac398cbf0112b945e22176dbbf9790a87"><div class="ttname"><a href="structcoap__resource__t.html#ac398cbf0112b945e22176dbbf9790a87">coap_resource_t::observable</a></div><div class="ttdeci">unsigned int observable</div><div class="ttdoc">can be observed</div><div class="ttdef"><b>Definition</b> <a href="resource_8h_source.html#l00073">resource.h:73</a></div></div>
<div class="ttc" id="astructcoap__session__t_html"><div class="ttname"><a href="structcoap__session__t.html">coap_session_t</a></div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00056">coap_session.h:56</a></div></div>
<div class="ttc" id="astructcoap__session__t_html_a017ee7bfd8942df7a1c656fe52d5ac6a"><div class="ttname"><a href="structcoap__session__t.html#a017ee7bfd8942df7a1c656fe52d5ac6a">coap_session_t::last_pong</a></div><div class="ttdeci">coap_tick_t last_pong</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00082">coap_session.h:82</a></div></div>
<div class="ttc" id="astructcoap__session__t_html_a28348c0c301bce7201403aa5545ef2b6"><div class="ttname"><a href="structcoap__session__t.html#a28348c0c301bce7201403aa5545ef2b6">coap_session_t::last_rx_tx</a></div><div class="ttdeci">coap_tick_t last_rx_tx</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00079">coap_session.h:79</a></div></div>
<div class="ttc" id="astructcoap__session__t_html_a29f92f61ab5c863c90254ce71e3859eb"><div class="ttname"><a href="structcoap__session__t.html#a29f92f61ab5c863c90254ce71e3859eb">coap_session_t::sock</a></div><div class="ttdeci">coap_socket_t sock</div><div class="ttdoc">socket object for the session, if any</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00068">coap_session.h:68</a></div></div>
<div class="ttc" id="astructcoap__session__t_html_a2b1cf84dfbbb313dd07afe2eba0f498b"><div class="ttname"><a href="structcoap__session__t.html#a2b1cf84dfbbb313dd07afe2eba0f498b">coap_session_t::max_retransmit</a></div><div class="ttdeci">unsigned int max_retransmit</div><div class="ttdoc">maximum re-transmit count (default 4)</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00089">coap_session.h:89</a></div></div>
<div class="ttc" id="astructcoap__session__t_html_a2d91d4ac95843b0a893e4d22f081f611"><div class="ttname"><a href="structcoap__session__t.html#a2d91d4ac95843b0a893e4d22f081f611">coap_session_t::partial_pdu</a></div><div class="ttdeci">coap_pdu_t * partial_pdu</div><div class="ttdoc">incomplete incoming pdu</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00078">coap_session.h:78</a></div></div>
<div class="ttc" id="astructcoap__session__t_html_a351217007fcd02e549b73569577fa5a1"><div class="ttname"><a href="structcoap__session__t.html#a351217007fcd02e549b73569577fa5a1">coap_session_t::endpoint</a></div><div class="ttdeci">struct coap_endpoint_t * endpoint</div><div class="ttdoc">session's endpoint</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00069">coap_session.h:69</a></div></div>
<div class="ttc" id="astructcoap__session__t_html_a382b6afaed298581b57d62aaf043cfe3"><div class="ttname"><a href="structcoap__session__t.html#a382b6afaed298581b57d62aaf043cfe3">coap_session_t::state</a></div><div class="ttdeci">coap_session_state_t state</div><div class="ttdoc">current state of relationaship with peer</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00060">coap_session.h:60</a></div></div>
<div class="ttc" id="astructcoap__session__t_html_a3d42db7192f7dd9b4dbc580623ae80b2"><div class="ttname"><a href="structcoap__session__t.html#a3d42db7192f7dd9b4dbc580623ae80b2">coap_session_t::psk_identity_len</a></div><div class="ttdeci">size_t psk_identity_len</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00085">coap_session.h:85</a></div></div>
<div class="ttc" id="astructcoap__session__t_html_a527f7977596333c89e623c3deb621d25"><div class="ttname"><a href="structcoap__session__t.html#a527f7977596333c89e623c3deb621d25">coap_session_t::local_addr</a></div><div class="ttdeci">coap_address_t local_addr</div><div class="ttdoc">local address and port</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00066">coap_session.h:66</a></div></div>
<div class="ttc" id="astructcoap__session__t_html_a580cf637bab6c459b600f83b3fe0e720"><div class="ttname"><a href="structcoap__session__t.html#a580cf637bab6c459b600f83b3fe0e720">coap_session_t::read_header</a></div><div class="ttdeci">uint8_t read_header[8]</div><div class="ttdoc">storage space for header of incoming message header</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00076">coap_session.h:76</a></div></div>
<div class="ttc" id="astructcoap__session__t_html_a5e1b647f8b5ce42ea7a0d0893fb3504a"><div class="ttname"><a href="structcoap__session__t.html#a5e1b647f8b5ce42ea7a0d0893fb3504a">coap_session_t::remote_addr</a></div><div class="ttdeci">coap_address_t remote_addr</div><div class="ttdoc">remote address and port</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00065">coap_session.h:65</a></div></div>
<div class="ttc" id="astructcoap__session__t_html_a62089dd9c72836d322ae0ce0d0e7114f"><div class="ttname"><a href="structcoap__session__t.html#a62089dd9c72836d322ae0ce0d0e7114f">coap_session_t::proto</a></div><div class="ttdeci">coap_proto_t proto</div><div class="ttdoc">protocol used</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00058">coap_session.h:58</a></div></div>
<div class="ttc" id="astructcoap__session__t_html_a68e9ded6d8b771bba584d50809cee98c"><div class="ttname"><a href="structcoap__session__t.html#a68e9ded6d8b771bba584d50809cee98c">coap_session_t::psk_key</a></div><div class="ttdeci">uint8_t * psk_key</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00086">coap_session.h:86</a></div></div>
<div class="ttc" id="astructcoap__session__t_html_a84e90d62fbc324bdf21041269befe30d"><div class="ttname"><a href="structcoap__session__t.html#a84e90d62fbc324bdf21041269befe30d">coap_session_t::delayqueue</a></div><div class="ttdeci">struct coap_queue_t * delayqueue</div><div class="ttdoc">list of delayed messages waiting to be sent</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00074">coap_session.h:74</a></div></div>
<div class="ttc" id="astructcoap__session__t_html_a8a7bb416f1b131d5eeddd2c7915d4e3e"><div class="ttname"><a href="structcoap__session__t.html#a8a7bb416f1b131d5eeddd2c7915d4e3e">coap_session_t::psk_identity</a></div><div class="ttdeci">uint8_t * psk_identity</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00084">coap_session.h:84</a></div></div>
<div class="ttc" id="astructcoap__session__t_html_a8f8e37457b167cc8b95fadd7eeffd8d7"><div class="ttname"><a href="structcoap__session__t.html#a8f8e37457b167cc8b95fadd7eeffd8d7">coap_session_t::context</a></div><div class="ttdeci">struct coap_context_t * context</div><div class="ttdoc">session's context</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00070">coap_session.h:70</a></div></div>
<div class="ttc" id="astructcoap__session__t_html_a9a70d6293b5af4165ad58115f1a4e63a"><div class="ttname"><a href="structcoap__session__t.html#a9a70d6293b5af4165ad58115f1a4e63a">coap_session_t::partial_read</a></div><div class="ttdeci">size_t partial_read</div><div class="ttdoc">if &gt; 0 indicates number of bytes already read for an incoming message</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00077">coap_session.h:77</a></div></div>
<div class="ttc" id="astructcoap__session__t_html_a9eb6890809e9aa01d225691bb4ae97db"><div class="ttname"><a href="structcoap__session__t.html#a9eb6890809e9aa01d225691bb4ae97db">coap_session_t::tls</a></div><div class="ttdeci">void * tls</div><div class="ttdoc">security parameters</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00071">coap_session.h:71</a></div></div>
<div class="ttc" id="astructcoap__session__t_html_ab360022130771a166ea0e93a1876ced4"><div class="ttname"><a href="structcoap__session__t.html#ab360022130771a166ea0e93a1876ced4">coap_session_t::con_active</a></div><div class="ttdeci">uint8_t con_active</div><div class="ttdoc">Active CON request sent.</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00073">coap_session.h:73</a></div></div>
<div class="ttc" id="astructcoap__session__t_html_abc8462729a3fcdf21edc2aae125c04b8"><div class="ttname"><a href="structcoap__session__t.html#abc8462729a3fcdf21edc2aae125c04b8">coap_session_t::local_if</a></div><div class="ttdeci">coap_address_t local_if</div><div class="ttdoc">optional local interface address</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00064">coap_session.h:64</a></div></div>
<div class="ttc" id="astructcoap__session__t_html_abe9912fc16ffc9c9f54b9cc0e898d0fb"><div class="ttname"><a href="structcoap__session__t.html#abe9912fc16ffc9c9f54b9cc0e898d0fb">coap_session_t::last_ping</a></div><div class="ttdeci">coap_tick_t last_ping</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00081">coap_session.h:81</a></div></div>
<div class="ttc" id="astructcoap__session__t_html_ac39d8e22dbd5389177a75819dab125ea"><div class="ttname"><a href="structcoap__session__t.html#ac39d8e22dbd5389177a75819dab125ea">coap_session_t::type</a></div><div class="ttdeci">coap_session_type_t type</div><div class="ttdoc">client or server side socket</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00059">coap_session.h:59</a></div></div>
<div class="ttc" id="astructcoap__session__t_html_ad69783e1a9bc85a43d0bd6511de2c6a0"><div class="ttname"><a href="structcoap__session__t.html#ad69783e1a9bc85a43d0bd6511de2c6a0">coap_session_t::last_tx_rst</a></div><div class="ttdeci">coap_tick_t last_tx_rst</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00080">coap_session.h:80</a></div></div>
<div class="ttc" id="astructcoap__session__t_html_af59543a005a01767382c6739cd710ee4"><div class="ttname"><a href="structcoap__session__t.html#af59543a005a01767382c6739cd710ee4">coap_session_t::partial_write</a></div><div class="ttdeci">size_t partial_write</div><div class="ttdoc">if &gt; 0 indicates number of bytes already written from the pdu at the head of sendqueue</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00075">coap_session.h:75</a></div></div>
<div class="ttc" id="astructcoap__session__t_html_af8b4ea1655029f581c5a85c93f4c742d"><div class="ttname"><a href="structcoap__session__t.html#af8b4ea1655029f581c5a85c93f4c742d">coap_session_t::csm_tx</a></div><div class="ttdeci">coap_tick_t csm_tx</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00083">coap_session.h:83</a></div></div>
<div class="ttc" id="astructcoap__session__t_html_af95ccb69ae49c6d8a2a3ccbd8d967067"><div class="ttname"><a href="structcoap__session__t.html#af95ccb69ae49c6d8a2a3ccbd8d967067">coap_session_t::psk_key_len</a></div><div class="ttdeci">size_t psk_key_len</div><div class="ttdef"><b>Definition</b> <a href="coap__session_8h_source.html#l00087">coap_session.h:87</a></div></div>
<div class="ttc" id="astructcoap__socket__t_html"><div class="ttname"><a href="structcoap__socket__t.html">coap_socket_t</a></div><div class="ttdef"><b>Definition</b> <a href="coap__io_8h_source.html#l00040">coap_io.h:40</a></div></div>
<div class="ttc" id="astructcoap__socket__t_html_afc857e7bf0427e0d08e2be5604bc5516"><div class="ttname"><a href="structcoap__socket__t.html#afc857e7bf0427e0d08e2be5604bc5516">coap_socket_t::flags</a></div><div class="ttdeci">coap_socket_flags_t flags</div><div class="ttdef"><b>Definition</b> <a href="coap__io_8h_source.html#l00048">coap_io.h:48</a></div></div>
<div class="ttc" id="astructcoap__str__const__t_html"><div class="ttname"><a href="structcoap__str__const__t.html">coap_str_const_t</a></div><div class="ttdoc">Coap string data definition with const data.</div><div class="ttdef"><b>Definition</b> <a href="str_8h_source.html#l00033">str.h:33</a></div></div>
<div class="ttc" id="astructcoap__str__const__t_html_a9a80ea586c315c518bc345e83d9c852f"><div class="ttname"><a href="structcoap__str__const__t.html#a9a80ea586c315c518bc345e83d9c852f">coap_str_const_t::s</a></div><div class="ttdeci">const uint8_t * s</div><div class="ttdoc">string data</div><div class="ttdef"><b>Definition</b> <a href="str_8h_source.html#l00035">str.h:35</a></div></div>
<div class="ttc" id="astructcoap__str__const__t_html_acab2b62ad139aed3925d34cbf8e3fded"><div class="ttname"><a href="structcoap__str__const__t.html#acab2b62ad139aed3925d34cbf8e3fded">coap_str_const_t::length</a></div><div class="ttdeci">size_t length</div><div class="ttdoc">length of string</div><div class="ttdef"><b>Definition</b> <a href="str_8h_source.html#l00034">str.h:34</a></div></div>
<div class="ttc" id="astructcoap__string__t_html"><div class="ttname"><a href="structcoap__string__t.html">coap_string_t</a></div><div class="ttdoc">Coap string data definition.</div><div class="ttdef"><b>Definition</b> <a href="str_8h_source.html#l00025">str.h:25</a></div></div>
<div class="ttc" id="astructcoap__string__t_html_ad904e545a40c835079a1eb2dd230fb29"><div class="ttname"><a href="structcoap__string__t.html#ad904e545a40c835079a1eb2dd230fb29">coap_string_t::s</a></div><div class="ttdeci">uint8_t * s</div><div class="ttdoc">string data</div><div class="ttdef"><b>Definition</b> <a href="str_8h_source.html#l00027">str.h:27</a></div></div>
<div class="ttc" id="astructcoap__string__t_html_adbca4bb782ba6046520f8608ef0f5a66"><div class="ttname"><a href="structcoap__string__t.html#adbca4bb782ba6046520f8608ef0f5a66">coap_string_t::length</a></div><div class="ttdeci">size_t length</div><div class="ttdoc">length of string</div><div class="ttdef"><b>Definition</b> <a href="str_8h_source.html#l00026">str.h:26</a></div></div>
<div class="ttc" id="astructcoap__subscription__t_html"><div class="ttname"><a href="structcoap__subscription__t.html">coap_subscription_t</a></div><div class="ttdoc">Subscriber information.</div><div class="ttdef"><b>Definition</b> <a href="subscribe_8h_source.html#l00056">subscribe.h:56</a></div></div>
<div class="ttc" id="astructopt__filter_html"><div class="ttname"><a href="structopt__filter.html">opt_filter</a></div><div class="ttdef"><b>Definition</b> <a href="option_8c_source.html#l00436">option.c:436</a></div></div>
<div class="ttc" id="auri_8c_html_a11d902f573bcfee188d5ccd4903d0393"><div class="ttname"><a href="uri_8c.html#a11d902f573bcfee188d5ccd4903d0393">coap_get_uri_path</a></div><div class="ttdeci">coap_string_t * coap_get_uri_path(const coap_pdu_t *request)</div><div class="ttdef"><b>Definition</b> <a href="uri_8c_source.html#l00562">uri.c:562</a></div></div>
<div class="ttc" id="auri_8c_html_af625b48713927c0c7cf9fb994ab7a7d4"><div class="ttname"><a href="uri_8c.html#af625b48713927c0c7cf9fb994ab7a7d4">coap_get_query</a></div><div class="ttdeci">coap_string_t * coap_get_query(const coap_pdu_t *request)</div><div class="ttdef"><b>Definition</b> <a href="uri_8c_source.html#l00512">uri.c:512</a></div></div>
<div class="ttc" id="authash_8h_html_aba7bc1797add20fe3efdf37ced1182c5"><div class="ttname"><a href="uthash_8h.html#aba7bc1797add20fe3efdf37ced1182c5">uint8_t</a></div><div class="ttdeci">unsigned char uint8_t</div><div class="ttdef"><b>Definition</b> <a href="uthash_8h_source.html#l00079">uthash.h:79</a></div></div>
<div class="ttc" id="autlist_8h_html"><div class="ttname"><a href="utlist_8h.html">utlist.h</a></div></div>
<div class="ttc" id="autlist_8h_html_a34a4e54d488753465f6e87bb63b93c0e"><div class="ttname"><a href="utlist_8h.html#a34a4e54d488753465f6e87bb63b93c0e">LL_DELETE</a></div><div class="ttdeci">#define LL_DELETE(head, del)</div><div class="ttdef"><b>Definition</b> <a href="utlist_8h_source.html#l00385">utlist.h:385</a></div></div>
<div class="ttc" id="autlist_8h_html_a487c0ce49f397e1743caae16a797e4bb"><div class="ttname"><a href="utlist_8h.html#a487c0ce49f397e1743caae16a797e4bb">LL_FOREACH</a></div><div class="ttdeci">#define LL_FOREACH(head, el)</div><div class="ttdef"><b>Definition</b> <a href="utlist_8h_source.html#l00413">utlist.h:413</a></div></div>
<div class="ttc" id="autlist_8h_html_ad0a695664d31f0b929fd50b39ebcf0ef"><div class="ttname"><a href="utlist_8h.html#ad0a695664d31f0b929fd50b39ebcf0ef">LL_FOREACH_SAFE</a></div><div class="ttdeci">#define LL_FOREACH_SAFE(head, el, tmp)</div><div class="ttdef"><b>Definition</b> <a href="utlist_8h_source.html#l00419">utlist.h:419</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="net_8c.html">net.c</a></li>
    <li class="footer">Generated on Fri Dec 27 2024 09:57:44 for libcoap by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.8 </li>
  </ul>
</div>
</body>
</html>
